相关疑难解决方法(0)

浮点数学是否破碎?

请考虑以下代码:

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)

为什么会出现这些不准确之处?

language-agnostic math floating-point floating-accuracy

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

将浮点数限制为两个小数点

我希望a四舍五入到13.95.

>>> a
13.949999999999999
>>> round(a, 2)
13.949999999999999
Run Code Online (Sandbox Code Playgroud)

round功能不像我预期的那样工作.

python floating-point precision rounding

1527
推荐指数
28
解决办法
287万
查看次数

numpy中的重要数字四舍五入

我试过搜索这个并没有找到满意的答案.

我想取一个列表/数组并将它们全部舍入到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)

谢谢

python numpy

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

Python Decimal - mili(10e-3)和micro(10e-6)的工程符号

这是困扰我的例子:

>>> 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 decimal python-2.7

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

将指数浮点数舍入到小数点后两位

我想在 Python 中将指数浮点数四舍五入为两位十进制表示。

4.311237638482733e-91 --> 4.31e-91
Run Code Online (Sandbox Code Playgroud)

你知道有什么快速的技巧可以做到这一点吗?
简单的解决方案,例如round(float, 2)并且"%.2f"%float不使用指数浮点数:/

编辑: 这不是关于舍入浮点数,而是舍入指数浮点数,因此它与如何在 Python 中将数字舍入为有效数字不同

python rounding exponential

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

Python-如何将浮点数舍入到1个有效数字

我想将浮点数四舍五入为特定数量的有效数字。与此答案非常相似:https : //stackoverflow.com/a/3411435/281021, 但除了正常round()行为外,它还应始终舍入。我无法使用,math.floor()因为它会将浮点数转换为整数。

基本上,0.45应该成为0.4代替0.5。而且1945.01应该成为1000.0代替2000.0

python floating-point

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

根据错误中的位数将错误舍入为1个有效数字和舍入值

我正在尝试编写一个函数,它将获取错误值列表以及与这些错误相关的参数:

  1. 将错误值舍入为1个有效数字(按惯例建立)
  2. 将参数值舍入为其关联错误中存在的位数.

例如,如果我的列表看起来像:

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()函数并在舍入后将错误中的小数位数提供给它,但我不确定如何到达在这个数字.

python

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

在python中四舍五入到有效数字

我想这样舍入 42949672 -> 42949700, 2147483647 -> 2147480000, 4252017622 -> 4252020000 等等。

我尝试使用以下内容,但仅适用于第一个。我怎样才能做一个更通用的?谢谢

round(42949672, -2)
Run Code Online (Sandbox Code Playgroud)

python rounding

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

如何将浮动对象转换为列表?

我正在编写一个脚本来将一个数字返回给一定数量的有效数字.我需要将浮动转换为列表,以便我可以轻松更改数字.这是我的代码:

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)

这个错误意味着什么,我怎么能阻止它发生?

python python-3.x

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

在 plt.text 函数的文本中传递值

这里是抽象的问题,每次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)

python matplotlib

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

Python内置函数源码-round()

问题

我想访问内置函数的源代码round(),以允许我创建一个非常相似的函数。我如何访问该源代码以及编辑/使用该源代码的容易程度如何?


round()我对此感兴趣的原因是,即使位数为负,内置函数也会将整数转换为浮点数。例如:

round(1234.5678,-2)
Run Code Online (Sandbox Code Playgroud)

退货

1200.0 
Run Code Online (Sandbox Code Playgroud)

我想创建一个返回整数的函数。我确信还有其他方法可以实现相同的结果,但我想看看内置函数如何实现此任务,因为我希望这是相当有效的。

python rounding

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