Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 限制浮点中的小数位数_Python_Python 3.x - Fatal编程技术网

Python 限制浮点中的小数位数

Python 限制浮点中的小数位数,python,python-3.x,Python,Python 3.x,在python中,如何在不舍入数字的情况下限制“float”的小数位数 例如: a = 1.45698946 >> Limit_a = 1.45698 而不是: 1.45699 这是长篇大论,但会给你的组成部分做一些更优雅 decimalPlaces = 5 val = 1.45698946 mod = 10 ** decimalPlaces truncated = float(int(val * dps)) / dps 对于小于5位小数的值,您将获得原始值。为了避免浮点精度错

在python中,如何在不舍入数字的情况下限制“float”的小数位数

例如:

a = 1.45698946
>>
Limit_a = 1.45698
而不是:

1.45699

这是长篇大论,但会给你的组成部分做一些更优雅

decimalPlaces = 5
val = 1.45698946
mod = 10 ** decimalPlaces
truncated = float(int(val * dps)) / dps

对于小于5位小数的值,您将获得原始值。

为了避免浮点精度错误,我建议使用
十进制模块:

from decimal import Decimal

a = 1.45698946
limit_a = str(int(a)) + str(Decimal(str(a)) % 1)[1:7] 
print(float(limit_a))
输出为:

1.45698

欢迎回答有关StackOverflow的第一个问题。你需要把你的问题弄清楚才能回答。您是否在问如何舍入到给定的小数位数——在您的示例中为5?如果是这样的话,它是向零舍入还是向负无穷大舍入(负数的情况不同)?您希望结果是浮点值还是字符串值?如果是浮点值,我们应该如何处理浮点值很少是精确的这一事实?非常感谢。第二条评论是我需要的什么是“第二条评论”?你是说第二个答案吗?您应该知道,答案的顺序会根据几个因素而变化,读者现在不会知道当前两个答案中的哪一个是您浏览器中的第二个。我查看了关于这个问题的其他几个线程,许多线程使用字符串转换,我不推荐使用。最好的解决方案是使用圆形的一些变体(numToTruncate-.5)。这里是我使用舍入并保留小数点后五位的变体:舍入(n-(1/10**5),5),其中n=1.45698946,“5”是保留的小数位数。