/bin/python2
>>> 1.0-0.99
0.010000000000000009
>>> def minus(oo,xx):
... return oo-xx
...
>>> print(minus(1.0,0.99))
0.01
上面的结果应该是正常的,下面的是怎么出来的?
小学数学题,求解惑
小学数学题,求解惑
本人在此论坛仅负责吐槽,问题急需解决请支付宝转账5毛至{我的[email protected]},将会竭诚为您服务
linux常见多媒体问题处理指南
1. 视频播放有问题->卸载gstreamer
2. 音频播放有问题->卸载pulseaudio
3. 远程播放有问题->卸载avahi
4. 系统全都有问题->卸载systemd,远离Lennart这傻逼让你从此轻松自在
⇩自由网络⇩
https://github.com/nyfair/freeweb
linux常见多媒体问题处理指南
1. 视频播放有问题->卸载gstreamer
2. 音频播放有问题->卸载pulseaudio
3. 远程播放有问题->卸载avahi
4. 系统全都有问题->卸载systemd,远离Lennart这傻逼让你从此轻松自在
⇩自由网络⇩
https://github.com/nyfair/freeweb
Re: 小学数学题,求解惑
小学生家长你壕jusss 写了:留名。。。。。。。。。
本人在此论坛仅负责吐槽,问题急需解决请支付宝转账5毛至{我的[email protected]},将会竭诚为您服务
linux常见多媒体问题处理指南
1. 视频播放有问题->卸载gstreamer
2. 音频播放有问题->卸载pulseaudio
3. 远程播放有问题->卸载avahi
4. 系统全都有问题->卸载systemd,远离Lennart这傻逼让你从此轻松自在
⇩自由网络⇩
https://github.com/nyfair/freeweb
linux常见多媒体问题处理指南
1. 视频播放有问题->卸载gstreamer
2. 音频播放有问题->卸载pulseaudio
3. 远程播放有问题->卸载avahi
4. 系统全都有问题->卸载systemd,远离Lennart这傻逼让你从此轻松自在
⇩自由网络⇩
https://github.com/nyfair/freeweb
- susbarbatus
- 帖子: 2966
- 注册时间: 2010-04-10 16:14
- 系统: Arch Linux
- 送出感谢: 6 次
- 接收感谢: 68 次
Re: 小学1年级数学题,求解惑
拆开来看就知道了
代码: 全选
>>> def minus(oo,xx):
... return oo-xx
...
>>> minus(1.0,0.99)
0.010000000000000009
>>> print(0.010000000000000009)
0.01
沉迷将棋中……
Re: 小学数学题,求解惑
因为python是渣渣
代码: 全选
[1] main > def minus(oo,xx)
[1] main * oo - xx
[1] main * end
=> nil
[2] main > minus(1.0, 0.99)
=> 0.010000000000000009
[3] main > 1.0 - 0.99
=> 0.010000000000000009
✡ 弄个dropbox空间来备份文件或者做私人代码服务器?
✡ 配置:[url]git://github.com/roylez/dotfiles.git[/url]
✡ 主页:http://roylez.heroku.com
✡ 各种稀奇玩意儿:http://dooloo.info
✡ 配置:[url]git://github.com/roylez/dotfiles.git[/url]
✡ 主页:http://roylez.heroku.com
✡ 各种稀奇玩意儿:http://dooloo.info
Re: 小学数学题,求解惑
roylez 写了:因为python是渣渣

来自冷轩信的 小叽叽
渠月 · QY https://vz.rs/u
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu
Ubuntu 20.04 快速设置指南,请配合浏浏览器自动翻译使用
我的gnome-shell扩展 https://s1.ax1x.com/2020/06/25/N0IFIS.png
本人只会灌水,不负责回答问题
无聊可以点一下→ http://u.nu/ubuntu
Ubuntu 20.04 快速设置指南,请配合浏浏览器自动翻译使用
我的gnome-shell扩展 https://s1.ax1x.com/2020/06/25/N0IFIS.png
-
- 帖子: 482
- 注册时间: 2013-09-13 0:42
- 系统: Debian sid
- 送出感谢: 0
- 接收感谢: 46 次
Re: 小学数学题,求解惑
跟python没什么关系.roylez 写了:因为python是渣渣
代码: 全选
[1] main > def minus(oo,xx) [1] main * oo - xx [1] main * end => nil [2] main > minus(1.0, 0.99) => 0.010000000000000009 [3] main > 1.0 - 0.99 => 0.010000000000000009
这是计算机本身的问题.
数值计算, 在当前的计算机架构下, 有一个精确度的问题.
除非为数值计算做特别优化( 比如像mathematica, matlab这样的专业软件, 或者像scheme等编程语言中), 一般的编程语言都存在精确度问题.
不信的话, 你可以用javascript来算一下: 1.0 - 0.99, 得到的结果是类似的.
当然了, python有专门的数学方面的模块, 用这些模块可以实现精确的数值计算.
另外, 楼主第一贴出, 使用print是有问题的, 因为print会对数值进行处理, 不信的话可以试试:
代码: 全选
>> print(1.0 - 0.99)
>> 1.0 - 0.99
跟你是否定义minus()函数没什么关系, 只是print()引起的误会.
另外, 如果需要让孩子们在计算机上玩数学/学数学的话, 在下强烈推荐mathematica这款软件. 简约, 强大, 优雅!
Re: 小学数学题,求解惑
nae6taiyie0T 写了:跟python没什么关系.roylez 写了:因为python是渣渣
代码: 全选
[1] main > def minus(oo,xx) [1] main * oo - xx [1] main * end => nil [2] main > minus(1.0, 0.99) => 0.010000000000000009 [3] main > 1.0 - 0.99 => 0.010000000000000009
这是计算机本身的问题.
数值计算, 在当前的计算机架构下, 有一个精确度的问题.
除非为数值计算做特别优化( 比如像mathematica, matlab这样的专业软件, 或者像scheme等编程语言中), 一般的编程语言都存在精确度问题.
不信的话, 你可以用javascript来算一下: 1.0 - 0.99, 得到的结果是类似的.
当然了, python有专门的数学方面的模块, 用这些模块可以实现精确的数值计算.
另外, 楼主第一贴出, 使用print是有问题的, 因为print会对数值进行处理, 不信的话可以试试:代码: 全选
>> print(1.0 - 0.99) >> 1.0 - 0.99 跟你是否定义minus()函数没什么关系, 只是print()引起的误会. 另外, 如果需要让孩子们在计算机上玩数学/学数学的话, 在下强烈推荐mathematica这款软件. 简约, 强大, 优雅![/quote] 是的,现在数字计算机的框架下,浮点数计算普遍存在精度问题, 即使强大如Mathematica,或者极致如Axiom,也未能免俗。 不过在CAS中,通常进行符号计算,所以不容易被注意到, 其实多迭代几次数值计算,就会发现,精度问题也挺严重。
两间东倒西歪屋
一个南腔北调人
一个南腔北调人
Re: 小学数学题,求解惑
mophisays 写了:nae6taiyie0T 写了:跟python没什么关系.roylez 写了:因为python是渣渣
代码: 全选
[1] main > def minus(oo,xx) [1] main * oo - xx [1] main * end => nil [2] main > minus(1.0, 0.99) => 0.010000000000000009 [3] main > 1.0 - 0.99 => 0.010000000000000009
这是计算机本身的问题.
数值计算, 在当前的计算机架构下, 有一个精确度的问题.
除非为数值计算做特别优化( 比如像mathematica, matlab这样的专业软件, 或者像scheme等编程语言中), 一般的编程语言都存在精确度问题.
不信的话, 你可以用javascript来算一下: 1.0 - 0.99, 得到的结果是类似的.
当然了, python有专门的数学方面的模块, 用这些模块可以实现精确的数值计算.
另外, 楼主第一贴出, 使用print是有问题的, 因为print会对数值进行处理, 不信的话可以试试:代码: 全选
>> print(1.0 - 0.99) >> 1.0 - 0.99 跟你是否定义minus()函数没什么关系, 只是print()引起的误会. 另外, 如果需要让孩子们在计算机上玩数学/学数学的话, 在下强烈推荐mathematica这款软件. 简约, 强大, 优雅![/quote] 是的,现在数字计算机的框架下,浮点数计算普遍存在精度问题, 即使强大如Mathematica,或者极致如Axiom,也未能免俗。 不过在CAS中,通常进行符号计算,所以不容易被注意到, 其实多迭代几次数值计算,就会发现,精度问题也挺严重。[/quote] Python 3 文档(简体中文) 3.2.2 documentation 14. 浮点算术: 问题和限制 http://docspy3zh.readthedocs.org/en/latest/tutorial/floatingpoint.html ……摘录……原文有例子…… 不幸的是, 大多数的十进制小数都无法严格的以二进制来表示. 一个结果就是, 普遍来说, 你输入的十进制的小数, 通常只是以接近的二进制数表示. ……摘录……原文有例子…… 在需要严格的数值表示时, 试试使用 decimal 模块, 这个模块实现了用于账目运算或更高精度时用到的数值算法. 另一种就是 fractions 模块, 它实现了基于有理数的算法 ( 所以 1/3 就可以准确的表述 ).