如何防止python中的舍入

如何防止python中的舍入,python,python-2.7,rounding,Python,Python 2.7,Rounding,假设一个变量有一个浮点值,如果我用另一个浮点值重新分配同一个变量,它将舍入该值的小数部分,相对于第一个值的小数部分的数量,我如何防止呢 例如: 问题不在于Python。请参见打印语句打印小数点后10位,即使它有更多小数点。只需在pythonshell中检查变量,它将为您提供整个值 >>> wav = 10.232483243243243 >>> print wav 10.2324832432 >>> wav 10.23248324324324

假设一个变量有一个浮点值,如果我用另一个浮点值重新分配同一个变量,它将舍入该值的小数部分,相对于第一个值的小数部分的数量,我如何防止呢 例如:


问题不在于Python。请参见打印语句打印小数点后10位,即使它有更多小数点。只需在pythonshell中检查变量,它将为您提供整个值

>>> wav = 10.232483243243243
>>> print wav
10.2324832432
>>> wav
10.232483243243243

问题不在于Python。请参见打印语句打印小数点后10位,即使它有更多小数点。只需在pythonshell中检查变量,它将为您提供整个值

>>> wav = 10.232483243243243
>>> print wav
10.2324832432
>>> wav
10.232483243243243

可以执行以下操作并设置精度:

$ cat test.py
a = 10.456878798
print "{0:.2f}".format(a)
a = 10.555546877796546
print "{0:.15f}".format(a)
上面将打印您:

$ python test.py
10.46
10.555546877796546

希望这有帮助。

您可以执行以下操作并设置精度:

$ cat test.py
a = 10.456878798
print "{0:.2f}".format(a)
a = 10.555546877796546
print "{0:.15f}".format(a)
上面将打印您:

$ python test.py
10.46
10.555546877796546

希望这有帮助。

你的假设是错误的。它不是根据输出的历史来剪裁输出。它只是始终显示固定数量的有效数字。尝试导入数学;p=3.14;打印p;p=math.pi;打印p。尝试wav=float(10.555546877796546)@SyedMauzeRehan我尝试了
float()
,但它不起作用。好的,所以我刚刚检查了它,它没有舍入值,它只是那样打印ti。。。使用pythonshell和>wav(输入),它将打印正确的值。这和打印声明有关。也不需要做float(),你的假设是错误的。它不是根据输出的历史来剪裁输出。它只是始终显示固定数量的有效数字。尝试导入数学;p=3.14;打印p;p=math.pi;打印p。尝试wav=float(10.555546877796546)@SyedMauzeRehan我尝试了
float()
,但它不起作用。好的,所以我刚刚检查了它,它没有舍入值,它只是那样打印ti。。。使用pythonshell和>wav(输入),它将打印正确的值。这和打印声明有关。也不需要做float()。是的,你是对的,但我不确定print是否正确,我已经尝试过sys.stdout.write,它也在打印舍入的值。Nit:你答案中的“10”不太准确:
print
语句(对于Python版本<3.2)显示了一个基于12位有效数字的值。虽然实际上是内部转换到
str
(与执行
str(wav)
)时发生的转换相同),但它负责舍入到12个有效数字。
print
语句隐式地进行转换。谢谢你的信息!是的,您是对的,但我不确定print是否正确,我已经尝试使用sys.stdout.write,它也在打印舍入值。Nit:您答案中的“10”不太准确:
print
语句(对于Python版本<3.2)显示了基于12位有效数字的值。虽然实际上是内部转换到
str
(与执行
str(wav)
)时发生的转换相同),但它负责舍入到12个有效数字。
print
语句隐式地进行转换。谢谢你的信息!这里到
Decimal
的转换是多余的:格式化
a
和格式化
Decimal(a)
会得到相同的结果。正确。谢谢你的通知(我编辑了答案)。在这里转换成十进制是多余的:格式化
a
和格式化
Decimal(a)
会得到相同的结果。正确。谢谢你的通知(我编辑了答案)。