相关疑难解决方法(0)

浮点限制

我的代码:

a = '2.3'
Run Code Online (Sandbox Code Playgroud)

我想显示a为浮点值.

既然a是一个字符串,我试过:

float(a)
Run Code Online (Sandbox Code Playgroud)

我得到的结果是:

2.2999999999999998
Run Code Online (Sandbox Code Playgroud)

我想要一个解决这个问题的方法.拜托,请帮助我.

我正在学习本教程.

python floating-point precision floating-accuracy

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

如何在Python中以精确的精度打印double?

我需要打印精度等于6的double,我发现函数是圆的:

print(str(round(result, 6))
Run Code Online (Sandbox Code Playgroud)

但是如果结果本身具有较低的精度,则打印功能最后会跳过零.

Gor示例,此类代码的输出,

print(str(round(4.0, 6)))
Run Code Online (Sandbox Code Playgroud)

是

4.0
Run Code Online (Sandbox Code Playgroud)

但我需要的是

4.000000
Run Code Online (Sandbox Code Playgroud)

我怎么能达到这个目的?

python precision double

5
推荐指数
1
解决办法
2万
查看次数

在元组中舍入数字

无论如何,我可以将一个元组内的数字向上舍入到两个小数点,由此:

('string 1', 1234.55555, 5.66666, 'string2')
Run Code Online (Sandbox Code Playgroud)

对此:

('string 1', 1234.56, 5.67, 'string2')
Run Code Online (Sandbox Code Playgroud)

提前谢谢了.

python

3
推荐指数
1
解决办法
7156
查看次数

python中如何减少小数位数?

我对python不太了解,正在学习。

我有一个这样的变量,

a = 23.34853234
Run Code Online (Sandbox Code Playgroud)

我想减少点后的数字。就像我在下面提到的

a = 23.35
Run Code Online (Sandbox Code Playgroud)

请帮我。谢谢

python-2.7

3
推荐指数
1
解决办法
5525
查看次数

需要以0.25的倍数进行舍入

我需要将货币金额计算为0.25,0.50,0.75,如果大于0.75,则必须舍入到下一个整数.

怎么做?

示例需要舍入:

  • 25.91至26,
  • 25.21至25.25
  • 25.44至25.50

等等.

python python-2.7 odoo odoo-10

3
推荐指数
1
解决办法
583
查看次数

python 使用固定数量的数字格式化浮点数

我想用固定数量的数字来格式化我的浮点数。现在我正在做以下事情

format="%6.6g"
print(format%0.00215165)
print(format%1.23260)
print(format%145.5655)
Run Code Online (Sandbox Code Playgroud)

但这输出

0.00215165
1.2326
145.565
Run Code Online (Sandbox Code Playgroud)

我也尝试过format="%6.6f",但它也没有真正给出我想要的......

0.002152
1.232600
145.565500
Run Code Online (Sandbox Code Playgroud)

什么是格式化数字的好方法,以便所有数字都具有精确的宽度 6(并且没有空格),就像这样?

0.002152
1.232600
145.5655
Run Code Online (Sandbox Code Playgroud)

python string-formatting

3
推荐指数
1
解决办法
1930
查看次数

浮点数和decimal.Decimal的小数位问题

我似乎在漂浮物上失去了很多精确度.

例如,我需要解决一个矩阵:

4.0x -2.0y 1.0z =11.0
1.0x +5.0y -3.0z =-6.0
2.0x +2.0y +5.0z =7.0
Run Code Online (Sandbox Code Playgroud)

这是我用来从文本文件导入矩阵的代码:

f = open('gauss.dat')
lines =  f.readlines()
f.close()

j=0
for line in lines:
    bits = string.split(line, ',')
    s=[]
    for i in range(len(bits)):
        if (i!= len(bits)-1):
            s.append(float(bits[i]))
            #print s[i]
    b.append(s)
    y.append(float(bits[len(bits)-1]))
Run Code Online (Sandbox Code Playgroud)

我需要使用gauss-seidel解决,所以我需要重新排列x,y和z的方程式:

x=(11+2y-1z)/4
y=(-6-x+3z)/5
z=(7-2x-2y)/7
Run Code Online (Sandbox Code Playgroud)

这是我用来重新排列方程的代码.b是系数矩阵,y是答案向量:

def equations(b,y):
    i=0
    eqn=[]
    row=[]
    while(i<len(b)):
        j=0
        row=[]
        while(j<len(b)):
            if(i==j):
                row.append(y[i]/b[i][i])
            else:
                row.append(-b[i][j]/b[i][i])
            j=j+1
        eqn.append(row)
        i=i+1
    return eqn
Run Code Online (Sandbox Code Playgroud)

然而,我得到的答案并不精确到小数位.

例如,在重新排列上面的第二个等式时,我应该得到:

y=-1.2-.2x+.6z
Run Code Online (Sandbox Code Playgroud)

我得到的是:

y=-1.2-0.20000000000000001x+0.59999999999999998z
Run Code Online (Sandbox Code Playgroud)

这似乎不是一个大问题,但是当你将数字提高到一个非常高的功率时,错误是非常大的.有没有解决的办法?我尝试了这个Decimal课程,但是它在功能方面效果不佳(即Decimal(x)**2 …

python floating-point decimal floating-accuracy

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

Python中的浮点加法

为什么Python中的后一种情况确实不会产生结果3.3呢?

>>> 1.0 + 2.3
3.3
>>> 1.1 + 2.2
3.3000000000000003
Run Code Online (Sandbox Code Playgroud)

对我来说似乎没有任何意义.对于您所获得的相同结果的表示有什么限制,1.0 + 2.3但不是通过1.1 + 2.2?

python floating-point

2
推荐指数
1
解决办法
3145
查看次数

Python - 将浮点数舍入为2位数

我需要将一个浮点变量舍入为2位有效数字,并将结果存储到一个新变量中(或者之前相同,它没关系)但是这是发生的事情:

>>> a    
981.32000000000005    
>>> b= round(a,2)    
>>> b
981.32000000000005
Run Code Online (Sandbox Code Playgroud)

我需要这个结果,但需要一个不能是字符串的变量,因为我需要将它作为一个浮点数插入...

>>> print b    
981.32
Run Code Online (Sandbox Code Playgroud)

实际上截断也可以工作我在这种情况下不需要极端精确.

python rounding

2
推荐指数
1
解决办法
3215
查看次数

以可预测的方式使用Python 2.7十进制的最佳实践(以金钱计)

首先,我对Python有点陌生,我知道这种浮点算法似乎很基础,但是我在SO中找不到任何重复/相关的问题

我有一个验收测试:期望3.3 / 3成为1.1

然后我尝试了..

from decimal import *
>>> Decimal(3.3) / Decimal(3)
Decimal('1.099999999999999940788105353')

>>> Decimal(3.3) / Decimal(3.0)
Decimal('1.099999999999999940788105353')

>>> Decimal('3.3') / Decimal('3')
Decimal('1.1') # as expected
Run Code Online (Sandbox Code Playgroud)

问题:以可预测的方式使用Python十进制的最佳实践是什么?还是只需要将每个十进制显示格式设置为字符串?

更具体地说:我正在为贷款数据报告编写一个小型自动化脚本。

python floating-point python-2.7

1
推荐指数
1
解决办法
144
查看次数