我的代码:
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)
我想要一个解决这个问题的方法.拜托,请帮助我.
我正在学习本教程.
我需要打印精度等于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)
我怎么能达到这个目的?
无论如何,我可以将一个元组内的数字向上舍入到两个小数点,由此:
('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不太了解,正在学习。
我有一个这样的变量,
a = 23.34853234
Run Code Online (Sandbox Code Playgroud)
我想减少点后的数字。就像我在下面提到的
a = 23.35
Run Code Online (Sandbox Code Playgroud)
请帮我。谢谢
我需要将货币金额计算为0.25,0.50,0.75,如果大于0.75,则必须舍入到下一个整数.
怎么做?
示例需要舍入:
等等.
我想用固定数量的数字来格式化我的浮点数。现在我正在做以下事情
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) 我似乎在漂浮物上失去了很多精确度.
例如,我需要解决一个矩阵:
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中的后一种情况确实不会产生结果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?
我需要将一个浮点变量舍入为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有点陌生,我知道这种浮点算法似乎很基础,但是我在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十进制的最佳实践是什么?还是只需要将每个十进制显示格式设置为字符串?
更具体地说:我正在为贷款数据报告编写一个小型自动化脚本。