Delphi – 比较两个“Real”数字变量
我对“Real”类型的两个变量的比较有问题.一个是数学运算的结果,存储在数据集中,第二个是表单中的编辑字段的值,由StrToFloat转换并存储到“Real”变量.问题是这样的:
正如你所看到的,程序试图告诉我,121,97不等于121,97 ……我已经读过了 现在让我们说它们不会存储为最接近的可表示数字.我怎样才能找到它们的存储方式?当我查看“CPU”调试窗口时,我完全迷失了.我看到地址,那些值应该是,但没有什么甚至类似于一些二进制,十六进制或实际数字的任何表示…我承认,高级调试对我来说是未知的宇宙…… 编辑: 好的,我不需要了解一切.虽然我没有处理金钱,但最多会有3位小数,所以“货币”就是出路 顺便说一句:计算方法是: DATA[i].Meta.UnUsedAmount := DATA[i].AMOUNT - ObjQuery.FieldByName('USED').AsFloat; 在这种情况下,它是3695 – 3573.03 解决方法
由于未知原因,您无法在监视列表中将浮点值(单/双或实数48)视为十六进制.
但是,您仍然可以通过将其视为内存转储来查看十六进制表示. 现在,您可以比较调试器中的两个值. 永远不要使用浮动货币金额 在数据库中,您使用货币或货币数据类型. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |