请考虑以下代码:
0.1 + 0.2 == 0.3 -> false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2 -> 0.30000000000000004
Run Code Online (Sandbox Code Playgroud)
为什么会出现这些不准确之处?
我想要显示:
49
如 49.00
和:
54.9
如 54.90
无论小数的长度或是否有任何小数位,我想显示Decimal
2位小数,我想以有效的方式做到这一点.目的是显示货币价值.
例如, 4898489.00
我在这段代码的输出中得到了很多小数(华氏温度到摄氏温度转换器).
我的代码目前看起来像这样:
def main():
printC(formeln(typeHere()))
def typeHere():
global Fahrenheit
try:
Fahrenheit = int(raw_input("Hi! Enter Fahrenheit value, and get it in Celsius!\n"))
except ValueError:
print "\nYour insertion was not a digit!"
print "We've put your Fahrenheit value to 50!"
Fahrenheit = 50
return Fahrenheit
def formeln(c):
Celsius = (Fahrenheit - 32.00) * 5.00/9.00
return Celsius
def printC(answer):
answer = str(answer)
print "\nYour Celsius value is " + answer + " C.\n"
main()
Run Code Online (Sandbox Code Playgroud)
所以我的问题是,如何使程序围绕小数点后两位的每个答案?
我需要对浮点数进行舍入以在UI中显示.例如,一个重要人物:
1234 - > 1000
0.12 - > 0.1
0.012 - > 0.01
0.062 - > 0.06
6253 - > 6000
1999年 - > 2000年
有没有一种很好的方法可以使用Python库来实现这一点,还是我必须自己编写?
我说有一个浮点数135.12345678910
.我想将该值连接到字符串,但只想要135.123456789
.通过打印,我可以通过以下方式轻松完成此操作:
print "%.9f" % numvar
Run Code Online (Sandbox Code Playgroud)
与numvar
我的原始号码.是否有捷径可寻?
round()函数的文档声明您传递一个数字,并将小数点后的位置传递给round.因此它应该这样做:
n = 5.59
round(n, 1) # 5.6
Run Code Online (Sandbox Code Playgroud)
但是,实际上,良好的旧浮点怪异爬进来,你会得到:
5.5999999999999996
Run Code Online (Sandbox Code Playgroud)
出于UI的目的,我需要显示5.6
.我在互联网上搜索并发现一些文档,这取决于我的Python实现.不幸的是,这发生在我的Windows开发机器和我尝试过的每台Linux服务器上.在这里也看到.
没有创建我自己的圆形库,有什么方法可以解决这个问题吗?
我有一个函数采用浮点数参数(通常是带有一个有效数字的整数或小数),我需要输出一个带有两个小数位(5 - > 5.00,5.5 - > 5.50等)的字符串中的值.我怎么能用Python做到这一点?
假设我有8.8333333333333339
,我想将其转换为8.84
.我怎样才能在Python中实现这一目标?
round(8.8333333333333339, 2)
给予8.83
而不是8.84
.我是Python新手或一般编程人员.
我不想将其打印为字符串,结果将进一步使用.有关该问题的更多信息,请查看Tim Wilson的Python编程技巧:贷款和付款计算器.
有没有办法将python float舍入到x小数?例如:
>>> x = roundfloat(66.66666666666, 4)
66.6667
>>>x = roundfloat(1.29578293, 6)
1.295783
Run Code Online (Sandbox Code Playgroud)
我已经找到了修剪/截断它们的方法(66.666666666 - > 66.6666),但不是圆形(66.666666666 - > 66.6667).