是否有编译器设置来控制如何在Delphi中键入浮点文字?
发布时间:2020-12-15 04:18:00 所属栏目:大数据 来源:网络整理
导读:虽然e的情况默认情况下工作,但我想更改文字0.1的默认转换,以允许r在没有任何代码修改的情况下工作.这可能通过编译器选项,编译器指令或其他任何东西吗? procedure Test;var s : Single; r : Real; d : Double; e : Extended;begin s := 0.1; if (s = 0.1) th
虽然e的情况默认情况下工作,但我想更改文字0.1的默认转换,以允许r在没有任何代码修改的情况下工作.这可能通过编译器选项,编译器指令或其他任何东西吗?
procedure Test; var s : Single; r : Real; d : Double; e : Extended; begin s := 0.1; if (s = 0.1) then ShowMessage('s matched'); // fail r := 0.1; if (r = 0.1) then ShowMessage('r matched'); // fail d := 0.1; if (d = 0.1) then ShowMessage('d matched'); // fail e := 0.1; if (e = 0.1) then ShowMessage('e matched'); // pass end; 解决方法
没有编译器开关可以满足您的需求.问题是32位Windows编译器将浮点文字表示为10字节扩展精度值.并且因为0.1不能完全表示,所以不等于0.1的8字节双精度表示.
documentation说:
但是,您可以使用类型常量来获得所需的结果.例如: const TenthDouble: Double = 0.1; var d: Double; .... d := 0.1; if d = TenthDouble then .... 通过使用类型化常量,我们可以强制编译器使常量为0.1的双字节精度表示. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |