请考虑以下代码:
0.1 + 0.2 == 0.3 -> false
Run Code Online (Sandbox Code Playgroud)
0.1 + 0.2 -> 0.30000000000000004
Run Code Online (Sandbox Code Playgroud)
为什么会出现这些不准确之处?
我希望a四舍五入到13.95.
>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999
Run Code Online (Sandbox Code Playgroud)
该round功能不像我预期的那样工作.
我试过搜索这个并没有找到满意的答案.
我想取一个列表/数组并将它们全部舍入到n个有效数字.我写了一个函数来做这个,但我想知道是否有一个标准的方法呢?我已经搜索但找不到它.例:
In: [ 0.0, -1.2366e22, 1.2544444e-15, 0.001222 ], n=2
Out: [ 0.00, -1.24e22, 1.25e-15, 1.22e-3 ]
Run Code Online (Sandbox Code Playgroud)
谢谢
这是困扰我的例子:
>>> x = decimal.Decimal('0.0001')
>>> print x.normalize()
>>> print x.normalize().to_eng_string()
0.0001
0.0001
Run Code Online (Sandbox Code Playgroud)
有没有办法用表示mili(10e-3)和micro(10e-6)的工程符号?
我想在 Python 中将指数浮点数四舍五入为两位十进制表示。
4.311237638482733e-91 --> 4.31e-91
Run Code Online (Sandbox Code Playgroud)
你知道有什么快速的技巧可以做到这一点吗?
简单的解决方案,例如round(float, 2)并且"%.2f"%float不使用指数浮点数:/
编辑: 这不是关于舍入浮点数,而是舍入指数浮点数,因此它与如何在 Python 中将数字舍入为有效数字不同
我想将浮点数四舍五入为特定数量的有效数字。与此答案非常相似:https : //stackoverflow.com/a/3411435/281021, 但除了正常round()行为外,它还应始终舍入。我无法使用,math.floor()因为它会将浮点数转换为整数。
基本上,0.45应该成为0.4代替0.5。而且1945.01应该成为1000.0代替2000.0。
我正在尝试编写一个函数,它将获取错误值列表以及与这些错误相关的参数:
例如,如果我的列表看起来像:
errors = [0.0097, 0.83, 0.05, 0.0045]
params = [0.0240, 7.85, 0.75, 12.5]
Run Code Online (Sandbox Code Playgroud)
应用此类函数后生成的列表如下所示:
errors_r = [0.01, 0.8, 0.05, 0.005]
params_r = [0.02, 7.9, 0.75, 12.500]
Run Code Online (Sandbox Code Playgroud)
首先将错误舍入为1个有效数字,然后将参数四舍五入到错误最终产生的任何数字位数.
以下函数取自这个问题如何将数字四舍五入到Python中的有效数字,可以很好地将错误四舍五入为1位有效数字:
from math import log10, floor
def round_to_1(x):
return round(x, -int(floor(log10(x))))
Run Code Online (Sandbox Code Playgroud)
要将params列表中的值四舍五入到其关联错误中的位数,我可以使用round()函数并在舍入后将错误中的小数位数提供给它,但我不确定如何到达在这个数字.
我想这样舍入 42949672 -> 42949700, 2147483647 -> 2147480000, 4252017622 -> 4252020000 等等。
我尝试使用以下内容,但仅适用于第一个。我怎样才能做一个更通用的?谢谢
round(42949672, -2)
Run Code Online (Sandbox Code Playgroud) 我正在编写一个脚本来将一个数字返回给一定数量的有效数字.我需要将浮动转换为列表,以便我可以轻松更改数字.这是我的代码:
def sf(n,x):
try:
float(n)
isnumber = True
except ValueError:
isnumber = False
if isnumber == True:
n = float(n)
n = list(n)
print(n)
else:
print("The number you typed isn't a proper number.")
sf(4290,2)
Run Code Online (Sandbox Code Playgroud)
这会返回错误:
Traceback (most recent call last):
File "/Users/jacobgarby/PycharmProjects/untitled/py package/1.py", line 29, in <module>
sf(4290,2)
File "/Users/jacobgarby/PycharmProjects/untitled/py package/1.py", line 25, in sf
n = list(n)
TypeError: 'float' object is not iterable
Run Code Online (Sandbox Code Playgroud)
这个错误意味着什么,我怎么能阻止它发生?
这里是抽象的问题,每次lst都不一样,所以我想自动做
import matplotlib.pyplot as plt
import numpy as np
fig=plt.figure()
fig.set_size_inches(8,4)
lst=np.array ([0.1235,0.2322,0.3300])
#how can I directly pass these value to plt.text, without manually input
plt.text(0.05,0.6,r'a=0.124, b=0.232, c=0.330',fontsize=18)
plt.show()
Run Code Online (Sandbox Code Playgroud) 我想访问内置函数的源代码round(),以允许我创建一个非常相似的函数。我如何访问该源代码以及编辑/使用该源代码的容易程度如何?
round()我对此感兴趣的原因是,即使位数为负,内置函数也会将整数转换为浮点数。例如:
round(1234.5678,-2)
Run Code Online (Sandbox Code Playgroud)
退货
1200.0
Run Code Online (Sandbox Code Playgroud)
我想创建一个返回整数的函数。我确信还有其他方法可以实现相同的结果,但我想看看内置函数如何实现此任务,因为我希望这是相当有效的。
python ×10
rounding ×4
decimal ×1
exponential ×1
math ×1
matplotlib ×1
numpy ×1
precision ×1
python-2.7 ×1
python-3.x ×1