相关疑难解决方法(0)

Python浮点任意精度可用吗?

只是为了好玩,因为它非常简单,我编写了一个简短的程序来生成嫁接数,但由于浮点精度问题,它没有找到一些更大的例子.

def isGrafting(a):
  for i in xrange(1, int(ceil(log10(a))) + 2):
    if a == floor((sqrt(a) * 10**(i-1)) % 10**int(ceil(log10(a)))):
      return 1

a = 0
while(1):
  if (isGrafting(a)):
    print "%d %.15f" % (a, sqrt(a))
  a += 1
Run Code Online (Sandbox Code Playgroud)

此代码缺少至少一个已知的嫁接编号.9999999998 => 99999.99998999999999949999999994999999999374999999912... 它乘以后似乎会降低额外的精度10**5.

>>> a = 9999999998
>>> sqrt(a)
99999.99999
>>> a == floor((sqrt(a) * 10**(5)) % 10**int(ceil(log10(a))))
False
>>> floor((sqrt(a) * 10**(5)) % 10**int(ceil(log10(a))))
9999999999.0
>>> print "%.15f" % sqrt(a)
99999.999989999996615
>>> print "%.15f" % (sqrt(a) * 10**5) …
Run Code Online (Sandbox Code Playgroud)

python floating-point floating-accuracy

42
推荐指数
4
解决办法
5万
查看次数

如何使Python格式浮点数具有一定数量的有效数字?

我希望我的Python(2.4.3)输出数字具有某种格式.具体来说,如果数字是<= 6位有效数字的终止小数,则显示全部.但是,如果它有> 6位有效数字,则只输出6位有效数字.

"A"显示了Python如何编写浮点数."B"表示我希望他们写的方式.如何以这种方式使Python格式化我的数字?

A:
10188469102.605597
5.5657188485
3.539
22.1522612479
0
15.9638450858
0.284024
7.58096703786
24.3469152383

B:
1.01885e+10
5.56572
3.539
22.1523
0
15.9638
0.284024
7.58097
24.3469
Run Code Online (Sandbox Code Playgroud)

python string python-2.4 number-formatting

22
推荐指数
2
解决办法
3万
查看次数