我必须在这种形式的python中打印一个数字: n =“35.66667” 输出应为“35.666”。现在,我在python中尝试了round()函数,最多3位小数,但它给出了35.667的错误结果。
任何想法如何打印浮动值最多3位小数而不会四舍五入?
答案 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