- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我已经有一个代码使用二分法来确定某物的值,问题是我需要一个非常精确的值,超过 15 位小数,并且在某些时候 python 停止变得更小的数字
我知道 Decimals 库,但我真的必须将代码中的每个参数重写为 Decimals(parameter) 吗?因为我有很多参数
有没有办法将代码中的每个 float 普遍转换为小数?或者有没有办法用不同的方式一起解决这个问题?
62.5
31.25
15.625
23.4375
27.34375
25.390625
26.3671875
25.87890625
25.634765625
25.7568359375
25.81787109375
25.787353515625
25.7720947265625
25.76446533203125
25.760650634765625
25.758743286132812
25.75969696044922
25.759220123291016
25.758981704711914
25.758862495422363
25.758802890777588
25.758832693099976
25.75881779193878
25.75882524251938
25.75882151722908
25.75882337987423
25.758824311196804
25.75882477685809
25.758825009688735
25.758825126104057
25.758825184311718
25.758825155207887
25.758825140655972
25.758825133380014
25.758825137017993
25.758825138836983
25.758825139746477
25.758825140201225
25.75882513997385
25.758825139860164
25.75882513980332
25.7588251397749
25.75882513978911
25.758825139796215
25.758825139792663
25.758825139790886
25.758825139791774
25.75882513979222
25.758825139792442
25.75882513979233
25.758825139792386
25.758825139792414
25.7588251397924
25.758825139792407
25.758825139792403
25.758825139792407
25.758825139792407
25.758825139792407
25.758825139792407
25.758825139792407
25.758825139792407
25.758825139792407
你看到在某些时候 Python 停止更改值,因为它不计算较小的数字
谢谢
最佳答案
对于float
实例,Python 使用机器级 double float (C 术语中的double
)。这究竟是什么取决于构建 Python 的平台和编译器。这些天它很可能是64-bit double-precision binary floating-point number . 53 位有效数字给出 15 到 17 位有效十进制数字。
如果你使用numpy
,你可以使用long double
float 。这有一个 64 位的后数,产生 approximately 18 decimal digits .
Decimal
值具有可调精度。默认情况下它是 28 位有效数字,但您可以更改它。因此,如果您可以使用 Decimal
支持的标准数学运算符和有限数量的数学函数,那么更改为 Decimal 可能是一个不错的选择。但这确实意味着更改所有代码。它是标准库的一部分,这可能是一个优势。
或者,您可以查看 mpmath
图书馆。这也允许您设置任意精度(默认为 15 位有效数字)。它支持比 Decimal
更高级的数学。它实现了 math
和 cmath
等的所有功能。但在这里您还必须转换整个程序以将 float
更改为 mpf
类型。默认情况下,mpmath 在内部使用整数。如果可用,mpmath 使用 Python 绑定(bind)到 gmp使它更快的库,尤其是在高精度(>100 位)时。
如果您想要更高的精度,则必须将您的程序转换为使用任意精度的数学模块。根据您使用的 math
函数的数量,mpmath
看起来更合适;它支持 math
和 cmath
的所有函数,然后是一些函数。
从 float
到 mpf
(或 Decimal
)类型的完全自动转换是不可能的。但你可以到达那里的大部分路。
Decimal
和 mpf
都支持标准数学运算符。所以你不应该改变那些。您确实需要查看您创建 或输入 float 的地方以及您使用math
函数的地方。
首先,将 float(
的所有实例更改为 Decimal(
或 mpf(
。这会处理显式创建的数字。其次,搜索所有浮点字面量,并用同样的方式替换它们。您可以为此使用编辑器的搜索和替换功能,或者您可以为此编写一个小的 Python 脚本。所以这在很大程度上可以自动化。
然后查看所有从源(例如文件或数据库)读取数据的函数,并更新它们。这可能必须手动完成,除非它们明确使用 float()
,在这种情况下它们由上述方法处理。
如果您当前正在使用 math
模块,则必须搜索这些函数并将其替换为所选模块中的等价函数。在这种情况下,搜索部分可以很容易地自动化。如果您使用过import math
,您可以轻松搜索“math.
”来找到需要替换的函数。在这种情况下,当使用 mpmath
时,您可以简单地将“math.
”替换为“mpmath.
”,因为 mpmath
> 实现了 math
中的所有函数。如果使用过from math import x, y, z
,则需要分别搜索x, y, z。您甚至可以编写脚本将 math
函数转换为它们在 Decimal
或 mpf
中的等效函数。这是否值得这样做取决于代码库的大小和复杂性。
关于python - 在 Python 中使用更多的小数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58148746/
我正在开发一个带选项卡栏的 ios 应用程序。我的栏上有超过 5 个按钮,所以在 iphone 上我有更多的按钮。现在,假设我有这个按钮:Button1 Button2 Button3 Button4
我有一个带有 UITabBarController 的应用,其中有超过五个选项卡。 当我按更多选项卡时,我会转到moreNavigationController,它是一个UINavigationCon
我有一个导航 Controller 。 NAVC->MORE... 按钮,然后在“更多”下有一些额外的 VC。 如果我转到“更多...”下的 VC,然后转到不在“更多...”上的 VC,那么当我返回到
因此,我想出了这种方案,用于在多个线程同时具有读写访问权限的二叉树中旋转时锁定节点,这涉及每次旋转锁定四个节点,这似乎是一个很多吗?我想到了一种比我想出的方法更聪明的方法来减少所需的锁定,但谷歌并没有
所以我已经尝试了所有方法,但我似乎仍然无法将下拉内容与 dropbtn 对齐。我只希望内容始终位于更多菜单下方。 HTML: `
我正在尝试使用 expect 来自动接受在 --more-- 中提示的 EULA。 #!/usr/bin/expect spawn "./greenplum-perfmon-web-4.1.2.0-b
他们如何在下面提供的网站上制作“告诉我更多”效果。我读过 read more/less effect in jQuery,但我发现该站点的有趣之处在于,除非单击该按钮,否则无法滚动页面。 Effect
现在,Kim Stebel helped me understanding如何使用存在类型键入变量,我需要知道如何在继承中使用它们: 以下代码无法编译: class PagingListModel(s
在我的Cygwin中不可用。另一方面,提供了“ less”命令。也许Cygwin的制造商认为“更多”只是多余的。 我对此很好奇。 最佳答案 安装util-linux软件包,您将获得“更多”的信息 ht
基本上,我想知道是否有人有增加 DTU 与分片的经验。 DTU应该线性地提高性能。因此,如果您有 5 个 DTU,而您改为 10 个 DTU,那么(理论上)您应该获得大约两倍的性能。 因此,四个 SQ
我们使用 asp.net mvc、javascript 和 jQuery(托管在本地计算机上)创建了一个应用程序。基本设计是,当用户从一个页面导航到其他页面时,我们通过隐藏和显示 HTML 页面,将所
我想用 RMonad 做一些基本的事情。有没有办法使用“as monad”功能来 有一个身份 rmonad,可以应用 monad 转换器吗? 有诸如 StateT 变压器之类的常见东西吗? 向现有 m
我有一个 char*[] 数组。我需要能够为其分配字符串并再次删除它们,但我不知道: 如何检查一个元素中是否已经有一个字符串,这样我就不会覆盖它,如果它已经被占用,则继续处理下一个元素? 之后如何将其
基本上,我想知道是否有人有增加 DTU 与分片的经验。 DTU应该线性地提高性能。因此,如果您有 5 个 DTU,而您改为 10 个 DTU,那么(理论上)您应该获得大约两倍的性能。 因此,四个 SQ
我有一个程序可以同时吐出标准错误和标准输出,我想在标准错误上少运行寻呼机,但忽略标准输出。我该怎么做? 更新: 就是这样......我不想丢失标准输出......只是让它远离寻呼机 program 2
基本上,当单击具有类 "dropdown" 的链接时,我无法获取“更多...”链接来对下一个跨度的高度进行动画处理。它根本就没有动画。仅当更改为 Less... 链接并且单击 Less... 链接以折
我正在使用 ExtJS,并认为它是一个了不起的框架。但是,它们没有内置的状态图,这使得依赖于状态的应用程序开发非常痛苦。 我最近发现了这个: https://github.com/jakesgordo
我一直在研究数据结构和算法,遗憾的是在C中。我已经单独实现了一个双向链表,它保存整数并且工作正常,但是当节点(或pub)让它正常工作时我遇到了很多麻烦在本例中)保存多个不同类型的值。我可以创建一个列表
编辑拼写错误 你好, 这可能是一个愚蠢的问题,但如果它能帮助我遵循最佳实践,我不在乎:P 假设我想在 System.Data 命名空间...以及 System.Data.SqlClient 命名空间中
使用 bootstrap 3 CSS、font awesome CSS 和最新的 jQuery JS 文件。 我正在使用 javascript 在单击按钮时在另一个内容 div 之上隐藏/显示一个内容
我是一名优秀的程序员,十分优秀!