把数字四舍五入到3西格

2024-03-28 19:23:00 发布

您现在位置:Python中文网/ 问答频道 /正文

我想为一个物理实验室写一个程序,可以把一个函数四舍五入到3sig。我试过使用round函数和其他在另一篇文章中提到的方法,但它不起作用。另一个问题的答案只包括1个sig fig,而不是3个sig fig。我需要它在四舍五入时浮动。例如,0.4324到.432,0.0002443到.000244,以及132300到132000。 我不希望它打印值,而是将其舍入,然后将其存储在变量中,因为我需要在中间步骤将其舍入

 m = float(input("Enter mass: "))
a = float(input("Enter acceleration: "))
i = m*a         
n = 3
print('{:g}'.format(float('{:.3g}'.format(i))))

这是我写的程序来计算3个sig的力。 这是输出

Enter mass: 4523
Enter acceleration: 2345
1.06e+07

Tags: 方法函数程序formatinput文章物理fig
2条回答

对于3 s.f.:

>>> print('{:g}'.format(float('{:.3g}'.format(12.345))))
12.3

here.

this post中所述,您可以使用float('%.3g' % i)。这会产生一个float(如果您打印它,它会自动转换为字符串)。你知道吗

如果要动态控制位数,可以引入一个小函数,首先创建格式化字符串。你知道吗

一些测试:

def round_to_n_digits(num, n=3):
    formatstr = '%.'+str(n)+'g'
    return float(formatstr % num)

i = 4523*2345
print(float('%.3g' % i))

a = [round_to_n_digits(4523*2345, 5),
     round_to_n_digits(123456789),
     round_to_n_digits(0.0002443),
     round_to_n_digits(0.4324)]
print (a)

输出:

10600000.0
[10606000.0, 123000000.0, 0.000244, 0.432]

相关问题 更多 >