作者comelin99 (jason)
看板Cad_Cae
标题[请益] 请教CAD 1.255问题
时间Tue May 24 14:48:17 2016
小弟最近发现一个问题
问题如下
(< (* 100 1.255 ) 125.5) → T ????
(= (* 100 1.355 ) 135.5) → T ????
1.255乘100小於125.5
1.355甚至其他数都不会有这个问题
验算後发现以下问题
(setq a (+ (* 100 2.255) 0.50)) → 226.0
(setq b (- 226 a)) → 0.0
感觉没什麽问题
但以下却不一样
(setq a (+ (* 100 1.255 ) 0.50)) → 126.0
(setq b (- 126 a)) → 1.42109e-014
到底是为什麽???
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 220.128.158.146
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Cad_Cae/M.1464072500.A.843.html
※ 编辑: comelin99 (220.128.158.146), 05/24/2016 14:48:50
※ 编辑: comelin99 (220.128.158.146), 05/24/2016 16:57:33
1F:推 gamer: 浮点运算精度问题吧,随便找本计算机概论,里面都会写 05/24 23:56
2F:→ comelin99: 可是我今天要写程式 遇到1.255数值不就毁了.. 还是有 05/25 01:28
3F:→ comelin99: 什麽解决方法 05/25 01:28
4F:推 enightcat: 不会毁了.就是精度的问题. 判断相等的话.有另外的函数 05/26 23:18
5F:→ enightcat: 可用 05/26 23:18
6F:推 enightcat: 我都用(equal a b 精度值) 比如.(equal a b 0.01) 去判 05/26 23:21
7F:→ enightcat: 别.. 05/26 23:21