In python, how do I preserve decimal places in numbers?
本问题已经有最佳答案,请猛点这里访问。
我想在函数之间传递数字,同时保留数字的小数位。
我发现,如果我将类似"10.00"的浮点值传递给一个函数,那么小数位就不会被使用。这会破坏计算百分比之类的操作。
例如,x*(10/100)将始终返回0。但如果我设法保留小数点后的位置,我最终会得到x*(10.00/100)。这将返回准确的结果。
我希望有一种技术,当我处理小数点后可以保持零的数字时,它可以实现一致性。
当你写作时
1 | 10 / 100 |
您正在执行整数除法。这是因为两个操作数都是整数。结果是
如果要执行浮点除法,请将其中一个操作数设为浮点值。例如:
1 | 10.0 / 100 |
或
1 | float(10) / 100 |
也要注意
1 | 10.0 / 100 |
结果在二进制浮点值和二进制浮点数据类型中不能表示
您应该使用
在划分两个整数时,python 2.x将使用整数除法,除非您明确地告诉它不要这样做。两个整数输入->一个整数输出。
python 3之后将返回,引用pep 238 http://www.python.org/dev/peps/pep-0238/对除法近似结果的合理近似值,即它将执行浮点除法,并返回结果而不取整。
要在早期版本的Python中启用此行为,可以使用:
1 | from __future__ import division |
在模块的最顶层,这应该可以得到您想要的一致的结果。
python中的division for
此外,如果您正在寻找将数字的小数点格式化为字符串的解决方案,则可能需要使用
Python
1 2 3 4 5 6 7 8 | # '1.000000' "%f" % (1.0) # '1.00' "%.2f" % (1.0) # ' 1.00' "%6.2f" % (1.0) |
如果您试图保留有效数字,那么十进制模块就是您所需要的一切。例子:
1 2 3 4 5 6 | >>> from decimal import Decimal >>> num = Decimal('10.00') >>> num Decimal('10.00') >>> num / 10 Decimal('1.00') |