相关疑难解决方法(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
查看次数