Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x python小数的准确性_Python 3.x - Fatal编程技术网

Python 3.x python小数的准确性

Python 3.x python小数的准确性,python-3.x,Python 3.x,如何使Python中的十进制更精确,以便计算多达 0.0000000000001 * 0.0000000000000000001 = ? 我需要将0.0000000145和0.00000000000000012314这样的小数相加,然后将它们相乘,得到准确的结果。是否有所需的代码或模块?提前谢谢 我需要比十进制更精确的东西。十进制。也许可以这样做 format(0.0000000000001 * 0.0000000000000000001,'.40f') “.40f”可以更改以获得更高的准确

如何使Python中的十进制更精确,以便计算多达

0.0000000000001 * 0.0000000000000000001 = ?
我需要将0.0000000145和0.00000000000000012314这样的小数相加,然后将它们相乘,得到准确的结果。是否有所需的代码或模块?提前谢谢


我需要比十进制更精确的东西。十进制。

也许可以这样做

format(0.0000000000001 * 0.0000000000000000001,'.40f')
“.40f”
可以更改以获得更高的准确性! 例如:
“.70f”
或类似的东西


这里70意味着我需要70位数的准确度。

不知道为什么你会被否决

十进制。十进制表示以10为基数的浮点数字。由于它不是直接在硬件中实现的,因此可以控制精度级别(默认为28个位置):

但是,您可能更喜欢使用支持任意精度实数和复数浮点计算的:

>>> from mpmath import mp
>>> mp.dps = 50
>>> print(mp.quad(lambda x: mp.exp(-x**2), [-mp.inf, mp.inf]) ** 2)
3.1415926535897932384626433832795028841971693993751

“我需要比十进制更精确的东西”-如果你这么想,那你就误解了
十进制.十进制
和浮点。请注意,这类事情在任何地方都不是很实用,你不应该做像
'.100f'
这样的事情,因为它不值得做得那么精确,小数点后的结果可能会乱七八糟。为什么要做
格式(0.0000000000001+0.0000000000000000001,.40f'))
给我“0.000000000000100000999999976550238136”?这种方法增加了输出的位数,但实际上并不影响浮点计算的准确性。后面的数字将不准确。
decimal.decimal(0.0000000000001+0.0000000000000000001)
也返回:
decimal(
1.000000999999765502381360232259734317584515795502627282636240212470245361328125e-13')
坦率地说,这是这个格式给出的数字,所以我相信这就是我们计算机的精确度极限?不确定!
>>> from mpmath import mp
>>> mp.dps = 50
>>> print(mp.quad(lambda x: mp.exp(-x**2), [-mp.inf, mp.inf]) ** 2)
3.1415926535897932384626433832795028841971693993751