Delphi的时间 x87 fpu control word 精度设置的不够
在win7 64位系统下, 一个DELPHI写的DLL注入一个C语言程序后. 出现非常奇怪的浮点数相加出错的情况. (注: 在XP系统下是正常的).
比如: 40725.0001597563 + 0.72490458022 (两个数值均为Double类型).
正确答案是: 40725.72506433652
但是..... 在注入的DLL里面计算的结果是: 40725.7251502359
请大家帮我看看, 产生错误结果的可能原因是什么? 非常感谢!
提供我的试验代码:
Memo1.Lines.Add(FloatToStr(40725.0001597563 + 0.72490458022));
这个显然是因为该程序的 x87 fpu control word 精度设置的不够,只支持单精度浮点运算的结果。可以用 delphi rtl 自带的 Get8087CW/Set8087CW 取得/设置该16位值。在该线程中取得 x87 cw 的值,用16位形式表示成 0xABCD,该线程的 B 应该为0,把该位设置为2或3即可(delphi 默认为3,用来支持80位的 Extended 类型)。到 intel 手册 basic 卷里找 x87 fpu 章里的说明,看看就明白了。
至于你说在 xp 下没错,我很怀疑注入的是否为同一个程序,一般编译器都会对该标志位进行设置
https://bbs.csdn.net/topics/370045425
Delphi的时间 x87 fpu control word 精度设置的不够的更多相关文章
- Delphi DateUtils时间单元
Uses DateUtils //时间单元,非常有用. 记得引用这个单元,不然不能用. CompareDate 比较两个日期时间值日期部分的大小 CompareDateTime 比较两个日期时间值的大 ...
- Delphi日期时间 UNIX
Delphi日期时间,就是常见的 2014-05-02 10:37:35 --------------------------------------------------------------- ...
- Delphi的时间处理
这几天因为自己要学习编写一个小程序中要用到一些时间处理.就在网上搜集一些教材学习到一般的应用,做个笔记,加深印象. 用上Delphi中相应的函数,Delphi的时间处理起来还是很容易的. Delphi ...
- C# Word中设置/更改文本方向
C# Word中设置/更改文本方向 一般情况下在Word中输入的文字都是横向的,今天给大家分享两种方法来设置/更改一个section内的所有文本的方向及部分文本的方向,有兴趣的朋友可以试下. 首先,从 ...
- Word 中设置图、表、公式、代码要与正文之间行间距
一.概述 在撰写论文等文档时,常常对图.表.公式.代码要与正文之间行间距有要求.例如: (5)图.表.公式.代码要与正文之间有6磅的行间距. 二.设置方式 选中 图/表/公式/代码 与 图题/表头/- ...
- SPSS输出结果如何在word中设置小数点前面显示加0
SPSS输出结果如何在word中设置小数点前面显示加0 在用统计分析软件做SPSS分析时,其输出的结果中,如果是小于1(绝对值)的数,那么会默认输出不带小数点的数值.例如0.362和 -0.141被显 ...
- 外部应用复制 表格 到word中 设置表格自适应
word 批量设置表格宽度自适应 描述 : 我们经常从 外部 如 excel,html 等其他文件 中复制的表格到word 文档 经常会出现在 word 中显示不全的问题 主要是源格式的表格 宽度比 ...
- Delphi 日期时间函数
DateUtils.IncYear();DateUtils.IncMonth();DateUtils.IncWeek();DateUtils.IncDay();DateUtils.IncHour(); ...
- Delphi 获取时间的年月日
procedure TFrmLltj.FormActivate(Sender: TObject); var Present: TDateTime; Year, Month, Day, Hour ...
随机推荐
- 【【henuacm2016级暑期训练】动态规划专题 N】Valid Sets
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 给你一棵树. 让你统计其中子树T的数量. 这个子树T要满足最大值和最小值之差小于等于d 树形DP 可以枚举点root为子树的根. 统 ...
- 洛谷 P2652 同花顺
P2652 同花顺 题目背景 所谓同花顺,就是指一些扑克牌,它们花色相同,并且数字连续. 题目描述 现在我手里有n张扑克牌,但它们可能并不能凑成同花顺.我现在想知道,最少更换其中的多少张牌,我能让这 ...
- echarts 设置x轴的和y轴的属性
axisLabel:{ interval:0,//横轴信息全部显示 rotate:-30,//-30度角倾斜显示 } splitNumber:10
- 鸟哥的Linux私房菜-----11、压缩指令与正则表示法
- CF 567C(Geometric Progression-map)
C. Geometric Progression time limit per test 1 second memory limit per test 256 megabytes input stan ...
- Xamarin部署时遇到错误: Failure [INSTALL_FAILED_UPDATE_INCOMPATIBLE]
1 把adb命令加入到环境变量. ADB 的位置:C:\Users\USER\AppData\Local\Android\android-sdk\platform-tools 2. 卸载包,执行(是a ...
- 用了一天的时间,linux下expect实现ssh自己主动登录server记,歧视下网上各种抄来抄去残段子
由于要对客户方的快30个项目进行特别有顺序的重新启动,所以不得不想办法写个脚本,网上看了不少段子.真是残缺的能够. 没有一段是能够正常运行的.我来按顺序记录一下 脚本的本身 使用expect实现自己主 ...
- [Codeforces 911F] Tree Destruction 解题报告(贪心)
题目链接: http://codeforces.com/contest/911/problem/F 题目大意: 给你一棵树,每次挑选这棵树的两个度数为1的点,加上他们之间的边数(距离),然后将其中一个 ...
- RabbitMq笔记(2)
今天收获不少,记个笔记. namespace RabbitMQTest { class Program { static void Main(string[] args) { Consumer(); ...
- 利用SignalR来同步更新Winfrom
之前写了个用Socket来更新多个Winfrom的试例,这两天看了下SignalR,也用这个来试一下 SignalR 地址:https://www.asp.net/signalr 我这个也是基于 ht ...