首页
社区
课程
招聘
解决 od 格式化 long double 错误
发表于: 2006-10-21 14:21 28434

解决 od 格式化 long double 错误

dummy 活跃值
23
2006-10-21 14:21
28434
收藏
免费 7
支持
分享
最新回复 (26)
雪    币: 203
活跃值: (10)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
26
最初由 gzgzlxg 发布
LOCKLOSE提出的方法比较简单,虽然精度上可能有点问题,按heXer的意见应该是能够满足使用要求了。我将它略微修改了一下,这样就不用跳到外面又跳回来了,也就是直接修改_fuistq函数,原函数为32个字节,修改后的长度为31个字节。
[code]
004AA2E0 __fuistq proc near
004AA2E0 D9 7D DC fnstcw word ptr [ebp-24h]
........

再一次发现你看问题只会看表面现象,不会看本质。本来不想再说,但是还得再罗嗦几句:
先说你的第一次修改,表面上看是加1和减1的区别,不说数学上应该四舍五入,就从编程角度来说就有本质的不同:你是修改函数的入口参数(表面解决,其他地方调用仍然会错),而我是修改函数本身代码(根本解决)。
再说这此修改,你改变了浮点控制寄存器,影响的不仅是这个程序的浮点精度,而是整个系统的浮点精度和浮点异常处理。而且修改后并没有解决olly显示的浮点结果同实际浮点一致问题,也就是说,还是四舍五入取整抹去了小数。不仅如此,还改变了实际浮点运算精度,换句话说就是用我和你的修改方法仅仅是显示结果与实际浮点有点误差而已,但是实际上的浮点运算结果和精度并没有改变。这个方法唯一的好处就是不会产生异常了。
2006-10-23 12:36
0
雪    币: 238
活跃值: (326)
能力值: ( LV12,RANK:450 )
在线值:
发帖
回帖
粉丝
27
最初由 gkend 发布
再一次发现你看问题只会看表面现象,不会看本质。

谢谢你的发现。
2006-10-24 12:03
0
游客
登录 | 注册 方可回帖
返回
//