在python中打印浮点值而不是向上舍入

时间:2016-08-07 13:52:20

标签: python

我必须在这种形式的python中打印一个数字:  n =“35.66667” 输出应为“35.666”。现在,我在python中尝试了round()函数,最多3位小数,但它给出了35.667的错误结果。

任何想法如何打印浮动值最多3位小数而不会四舍五入

5 个答案:

答案 0 :(得分:3)

  

是的,但这是问的问题。要将浮点值打印到最多3个小数位而不进行四舍五入。

因此修剪字符串表示:

def trim_float(n, d):
    n_str = str(n)
    point_index = n_str.find('.')
    return float(n_str[:point_index + d + 1])

print(trim_float(35.66667, 3))
>> 35.666

答案 1 :(得分:1)

在学术情况下,答案可能是例如:

"将字符串转换为浮点数,math.floor将其转换为3位小数并转换回字符串"

在现实生活中(或者在你想要工作的任何公司的面试中),正确的答案是:

"为什么?!?在我们尝试任何实施之前,请解释这个业务逻辑背后的原因。"

答案 2 :(得分:0)

如果你想强制35.66667到35.666(即向下舍入),这可能会有效:

import math

n = 35.6667

print(math.floor(n * 1000) / 1000)

<强>输出

35.666

希望其他人可以发布更优雅的方式来实现这一目标。

答案 3 :(得分:0)

使用format

n = 35.66667
print "{0!s:.6}".format(n)
# 35.666

答案 4 :(得分:0)

似乎要截断超过第三个小数的所有内容。向上舍入为您提供正确的舍入结果,但不是您需要的结果。

你可以只切片不需要的小数。

n = "35.66667"
print(float(n[:-2]))
=> 35.666