1
king1101 2019 年 4 月 10 日
这些错误是由底层 CPU 和 IEEE 754 标准通过自己的浮点单位去执行算术时的特征。由于 Python 的浮点数据类型使用底层表示存储数据,因此你没办法去避免这样的误差。如果想要精确一点的话,可以使用 decimal 模块。(摘自 Python Cookbook )
|
2
xiaoheijw 2019 年 4 月 10 日
python 默认的是 17 位小数的精度,前 16 位是准确的,第 17 位开始不准确
|
3
momo1999 2019 年 4 月 10 日
基础不牢固啊
|
4
shintendo 2019 年 4 月 10 日
这不是 python 的 bug,而是几乎所有主流编程语言(使用 IEEE 754 格式存储浮点数)都有的问题
其本质原因是,在十进制里能精确表示的小数,用二进制不一定能精确表示 |
5
justou 2019 年 4 月 10 日
每隔一段时间 python 都要出一个这种 bug
这是好事, 说明玩蛇的队伍一直都在壮大 |
6
wly19960911 2019 年 4 月 10 日
https://www.guokr.com/article/27173/ 看这篇就好了。主要是真实值展示和二进制存储存储的差异问题。
|
7
hmzt 2019 年 4 月 10 日 看来 c 语言作为入门语言还是很必要的,hh
|
8
shawndev 2019 年 4 月 10 日
这是浮点数的 bug,如果嫌计算不准确,听说可以试一试 fortran
|
9
jhsea3do 2019 年 4 月 10 日
nodejs 下有一款 big.js 很好用
python 下用 numpy 可以 import numpy as np np.multiply(4.8, 1.2) |
10
vcgo 2019 年 4 月 10 日
浮点数运算丢失精度,不只是 Python,很多编程语言都是这样。
|
12
whoami9894 2019 年 4 月 10 日 via Android
是的,这是解释器的 bug,楼主快去社区反馈
|
13
mmdsun 2019 年 4 月 10 日 via Android
快去恶补基础。不止是 py 不少语言都丢精度。
高精度运算比如价格:可以库里存分。用 long 或者整数小数分开处理。 java 可以用大数类运算。 |
14
tcitry 2019 年 4 月 10 日
看看小数点后的二进制表示法?
|
15
nikolai 2019 年 4 月 10 日
|
16
fan2006 2019 年 4 月 11 日
from decimal import Decimal
print(Decimal('4.8')*12) |
17
Qzier 2019 年 4 月 12 日 via iPhone
与编程语言无关,与计算机浮点数的表示有关。
|