Python 如何在不进行任何舍入的情况下将浮点数转换为4位小数?

Python 如何在不进行任何舍入的情况下将浮点数转换为4位小数?,python,python-3.x,Python,Python 3.x,我将取一个整数,然后用float number中的sqrt函数将其根打印到小数点后4位,不进行任何舍入;但我有个问题。例如,当我以3作为输入时,输出为1.7320。这是正确的;但当我以4作为输入时,我期望2.0000作为输出;但我看到的是1.9999。我做错了什么 import math num = math.sqrt(float(input())) - 0.00005 print('%.4f' % num) 退房 该页面的解决方案之一是将您的打印语句替换为:print(format(num,

我将取一个整数,然后用float number中的
sqrt
函数将其根打印到小数点后4位,不进行任何舍入;但我有个问题。例如,当我以3作为输入时,输出为1.7320。这是正确的;但当我以4作为输入时,我期望2.0000作为输出;但我看到的是1.9999。我做错了什么

import math
num = math.sqrt(float(input())) - 0.00005
print('%.4f' % num)
退房

该页面的解决方案之一是将您的打印语句替换为:
print(format(num,.4'))


使用现代f字符串:
print(f'{num:.4f}')

基于3的平方根的预期输出,似乎您真的只想截断或扩展平方根输出到小数点后4位(而不是向上或向下四舍五入)。如果是这种情况,您可以将格式设置为小数点后5位,并切掉字符串中的最后一个字符(下面的示例将您的输入替换为硬编码字符串以供说明)


为什么这令人惊讶?sqrt为4时为2,
2-0.00005
1.99995
…是否有帮助?例如,如果运行
print('%.16f'%num)
,您会看到
num
只比1.99995小一点点<代码>%.4f因此,最低为1.9999。我认为这是开始进一步阅读的正确地方。
import math

n = '{:.5f}'.format(math.sqrt(float('3')))[:-1]
print(n)
# 1.7320

n = '{:.5f}'.format(math.sqrt(float('4')))[:-1]
print(n)
# 2.0000