我有一个函数,作为用户输入浮点参数。我需要确定这个参数在小数点右边的位数。我试过以下方法,但在函数中不起作用。有别的选择吗
def x(x,y,minp):
delta = ( ( y - x)/ minp ) * 10
return delta
本质上,我写了一个函数来计算2个值的增量,这个值有一个乘数。但是增量随着我在minp
中指定的最小增量而变化
例如,如果x=100,y=90,minp=1,那么上面的值应该等于100,当y和x有小数点时,问题就出现了
有什么想法吗
编辑:
所以问题是如果说x = 99.10
,y=99.0
,和minp=0.01
,我得到99.99999999999432
我试过:
delta = ( ( 99.1 - 99.0 )/ 0.01 ) * 10
dec = decimal.Decimal( 0.01 )
rounding = dec.as_tuple().exponent
round(delta,rounding)
上面返回0.0
如果希望将数字精确舍入到小数位数(这通常是处理精度问题的错误方法),则需要将它们存储为
Decimal
s:实际上,除了货币,这几乎是一种糟糕的做法。十进制数学只有这样一个特性:它能更精确地打印,而不是天生的更精确
相反,你通常希望
正确解释精度误差,通常采用误差界和对浮点的良好理解
完全没有错误:
即使在函数中也很有用:
因为即使您有不精确的输入和输出,中介也是精确的。在这种情况下,它没有帮助,因为问题在于输入,而不是中介
第二种选择是缓慢的,所以实际上处理错误总是更好的。不管怎样,科学并不是给你无限精确的测量
相关问题 更多 >
编程相关推荐