我正在编写一个python代码,我要求用户输入,然后我必须使用他们的输入来给出表达式答案的小数位数。
userDecimals = raw_input (" Enter the number of decimal places you would like in the final answer: ")
然后我将其转换为整数值
userDecimals = int(userDecimals)
然后我写了表达式,我希望答案的位数与UserDecimals的用户输入一样多,而且我不知道如何实现这一点。
表达式是
math.sqrt(1 - xx **2)
如果这个不够清楚,我会尝试更好地解释它,但我是python的新手,我不知道该怎么做。
答案 0 :(得分:1)
使用string formatting并将userDecimals
传递到format specifier的precision
部分:
>>> import math
>>> userDecimals = 6
>>> '{:.{}f}'.format(math.sqrt(1 - .1 **2), userDecimals)
'0.994987'
>>> userDecimals = 10
>>> '{:.{}f}'.format(math.sqrt(1 - .1 **2), userDecimals)
'0.9949874371'
答案 1 :(得分:0)
格式化print语句时,您可以指定要显示的有效数字的数量。例如,'%.2f' % float_value
将显示两个小数位。有关更详细的讨论,请参阅this question。
你想要这样的东西:
import math
xx = .2
userDecimals = raw_input (" Enter the number of decimal places you would lik e in the final answer: ")
userDecimals = int(userDecimals)
fmt_str = "%."+str(userDecimals)+"f"
print fmt_str % math.sqrt(1 - xx **2)
输出:
Enter the number of decimal places you would like in the final answer: 5
0.97980