delphi – 为什么Round(-0.0066219357357)返回-1?
发布时间:2020-12-15 09:43:29 所属栏目:大数据 来源:网络整理
导读:我想回合(-0.0066219357357)并给出-1. 它不应该是0吗?我可以用什么来正确地围绕它? 更新: 该数字是(LineDirection.X / distance)的结果; 其中LineDirection.X是一个整数,而Distace是double. 解决方法 从XE查看System.pas,所有工作都由FISTP指令完成: pro
我想回合(-0.0066219357357)并给出-1.
它不应该是0吗?我可以用什么来正确地围绕它? 更新: 解决方法
从XE查看System.pas,所有工作都由FISTP指令完成:
procedure _ROUND; asm ... FISTP qword ptr [ESP] ... end; 根据英特尔Instruction Reference,根据FPU控制字的RC字段指定的舍入模式,值“舍入为整数值” 因此,我建议您检查FPU控制字的RC字段是否设置为您需要的舍入. 您可以通过使用整个控制字来执行此操作 – 请参阅Set8087CW,以及相关的xxxx8087CW过程/函数,以及Default8087CW变量. 或者你可以试试Math.SetRoundMode,正如@Uwe Raabe建议的那样.您的情况听起来像是使用了rmUp或rmTruncate rmDown. 从理论上讲,你的CPU也是原因,但事实并非如此. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |