>>> str(1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702)
'1.41421356237'
有没有办法让str()在字符串中记录更多的数字?我不明白为什么它默认截断。
答案 0 :(得分:5)
答案 1 :(得分:2)
试试这个:
>>> from decimal import *
>>> Decimal('1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702')
Decimal('1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702')
float
文字默认情况下会被截断以适合可用的空间(即不是因为str
):
>>> 1.41421356237309504880168872420969807856967187537694807317667973799073247846210703885038753432764157273501384623091229702
1.4142135623730951
如果您需要更多小数位,请改用decimal
。
答案 2 :(得分:1)
Python编译器正在截断;你的浮点文字比C双重表示的更精确。如果您需要更高的精确度,请首先将数字表示为字符串。
答案 3 :(得分:0)
那是因为它正在转换为浮动。这不是转换为导致它的字符串。 您应该使用decimal.Decimal来表示如此高精度的数字。