后面很长的尾巴是怎么来的?
>>> 9.9 * 0.4
3.96oooooooooooo4
>>> 9.9 * 0.6
5.94
>>> 9.9 * 0.8
7.92oooooooooooo1
1
ynyounuo 2019-09-22 23:52:00 +08:00 3
好消息,21 世纪美国新出的产品谷歌可以免费给你这类问题的答案了!
|
2
by73 2019-09-22 23:56:55 +08:00
引子 * 乎:请重修 IEEE 754
|
3
ZRS 2019-09-23 00:00:28 +08:00
浮点数本来就有误差....
|
4
gclove 2019-09-23 00:01:58 +08:00 1
好消息,21 世纪美国新出的产品谷歌可以免费给你这类问题的答案了!
把数字转换成二进制你就知道了,你应该使用二进制计算,而不是 10 进制 |
5
ipwx 2019-09-23 00:20:51 +08:00
月经贴,总是以各种方式见到这个问题。
IEEE 754 |
6
qiayue 2019-09-23 00:27:53 +08:00
跟具体的语言无关,任何语言都会出现浮点数计算误差
关键字:浮点数二进制 |
7
Yourshell 2019-09-23 00:32:15 +08:00 via iPhone
几乎所有 cs 入门教程都有提到这个问题,虽然我忘了🐱
|
8
Raymon111111 2019-09-23 00:47:22 +08:00
十进制的有限小数表达成二进制可能是无限小数
|
9
caomu 2019-09-23 00:50:55 +08:00 via Android
好消息!好消息!本站成功和谷歌达成合作关系,以后大家有什么想问的问题可以直接谷歌搜索,不需要在发帖问了,可以省下大家很多时间!非常方便!
|
10
eric6356 2019-09-23 00:52:27 +08:00 via iPhone 1
|
11
cherbim 2019-09-23 05:17:49 +08:00 via iPhone
所有的语言入门都会提到这个问题,详情 ieee 754 标准
|
12
334862132 2019-09-23 05:19:10 +08:00
跟 python 语言美关系,这个涉及到计算机底层原理,所有语言都一个样 python 的话用 decimal 包之后变成 str 试试吧
|
13
Karpov 2019-09-23 09:27:39 +08:00
感谢楼主,重新学习了一下·
https://juejin.im/entry/575543857db2a2006993114e |
14
Pythondr 2019-09-23 10:14:46 +08:00
这种基础的问题为什么不自己去看去学习呢?
https://juejin.im/post/5d6e74c35188254628237d5d |
15
mcluyu 2019-09-23 10:17:23 +08:00
二进制无法精确表示十进制的浮点数
|
16
Vegetable 2019-09-23 10:19:30 +08:00
题注这样也好,让很多人都学习\复习了一遍这个知识
|
17
ps1aniuge 2019-09-23 12:41:22 +08:00
PS A:\pscode> 9.9 * 0.4
3.96 PS A:\pscode> powershell 没这问题。或者说默认设置好一些。 在 powershell 中,有自动的数字类型判断,当然你也可以手动。 默认 1/3*3 = 1 也可以手动设定[decimal]1/3*3 = 0.9999999999999 |
18
no1xsyzy 2019-09-23 12:52:24 +08:00
|
19
mangoDB 2019-09-23 13:00:43 +08:00
你需要了解一下,在计算机中,是如何通过二进制来表示`浮点数`的。
|
20
gIrl1990 2019-09-23 13:33:53 +08:00
我来说一个题外的:
ECMAScript uses a double-precision 64-bit binary format IEEE 754-2008 value for number `Number.MIN_SAFE_INTEGER` `Number.MAX_SAFE_INTEGER` |
21
u823tg 2019-09-23 14:02:55 +08:00 via Android
你得去看看基础了。这个是很基础的问题。
|
22
littlewing 2019-09-23 19:13:01 +08:00
要你们多学学计算机基础知识,你们不听
|
23
ps1aniuge 2019-09-23 23:18:22 +08:00
在 powershell 中,有自动的数字类型判断,当然你也可以手动。
================================= [decimal]1/3*3 = 0.9999999999999 ================================= PS A:\pscode> [decimal]9.9 * 0.4 - 3.96 0.00 PS A:\pscode> ================================= |
24
banxi1988 2019-09-23 23:57:18 +08:00
|