cnCalc计算器论坛

 找回密码
 注册
搜索
查看: 6566|回复: 7

[fx-9860/9750] 9860GII OS的Bug!(最新发现)

[复制链接]
发表于 2010-10-4 11:26:37 | 显示全部楼层 |阅读模式
拿起你手中的9860,运行imath的2D-Math7,输入根号2+根号6进行计算结果非常令人吃惊,居然没有算出来?
然而实际上这并不是2D-Math系列算法的问题
其实是。。。
请看下图
在第一张图中引用了2D-MATH计算双排根号中的一步,N、Q的值如图可见,分别是8和48,那么计算第一行的结果是4,并没有问题可当我们对这个算式取整数部分(Int),奇怪的事情出现了,“4”的整数部分居然是3,而取分数部分却是1,明显不符常理!
我们在下图中对数字4取整数部分,发现结果正常
综上所述,我们很容易便可得出一个结论,那就是第一个算式的结果并不是我们所常见的4!其实是一个像3.999999999998这样的数字,计算器在显示的时候取了前9位,发现后面还有数字,就进行了进位,于是显示出了结果4!(计算器内部计算的时候应该是15位精度计算)

我认为这个Bug的出现时计算器开方算法和显示时对内部精度处理所导致的
这个Bug的结果就使一些看似正常的计算得出了异常结果,也就出现了开头的2D-Math竟然无法计算简单的双排根号问题

2D-MATH系列问题的解决:在计算上述算式时,对计算结果RndFix保留9个精度,这样就不会出现无法计算的问题了

我相信勤奋体贴的CASIO一定可以在即将到来的新OS中解决这个问题!谢谢了!

注意:附图中最后两张图片是经修改过的2D-MATH7使用示例
DispCap8.jpg
DispCap9.jpg
DispCap11.jpg
DispCap6.jpg
DispCap7.jpg

评分

参与人数 1金钱 +2 专家 +1 收起 理由
Ulysses + 2 + 1 好,刻苦钻研。

查看全部评分

发表于 2010-10-4 11:40:58 | 显示全部楼层
..............int()...
........还是用RndFix()函数
但是那个单独的Rnd函数有何作用
 楼主| 发表于 2010-10-4 11:51:43 | 显示全部楼层
摘自9860说明书

{ Rnd } ... {将用于内部计算的数值四舍五入至10个有效位(与答案存储器中的数值相符),或者
四舍五入至您指定的小数位数(Fix)和有效位数(Sci)}
{ RndFi } ... {将用于内部计算的数值四舍五入至指定数位(0至9)(参见第2-2页)。}
 楼主| 发表于 2010-10-4 11:53:44 | 显示全部楼层
对比差别就知道Bug产生的原因啦
发表于 2010-10-4 12:08:11 | 显示全部楼层
摘自9860说明书

{ Rnd } ... {将用于内部计算的数值四舍五入至10个有效位(与答案存储器中的数值相符),或者
四舍五入至您指定的小数位数(Fix)和有效位数(Sci)}
{ RndFi } ... {将用于内部计算的数值四舍五 ...
noivan 发表于 2010-10-4 11:51

似乎rnd 也行。。。。
 楼主| 发表于 2010-10-4 12:53:41 | 显示全部楼层
目前问题就是未显示出来的第10位是否会对结果造成影响呀
还是RndFix更好点
发表于 2010-10-4 17:48:53 | 显示全部楼层
感觉rnd更正统
发表于 2010-10-5 00:47:22 | 显示全部楼层
所以我编写的程序绕开了这个问题。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|cnCalc计算器论坛

GMT+8, 2024-12-22 09:50 , Processed in 0.102511 second(s), 26 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表