社区
VFP
帖子详情
一個有趣的問題
s_111111
2008-07-09 09:50:42
CLEAR
Create Cursor AAA(A N(16,5))
Insert Into AAA(A) Values (2684.18000)
?Int(AAA.A*100000)
Create Cursor AAA(A N(16,5))
Insert Into AAA(A) Values (2685.18000)
?Int(AAA.A*100000)
大家猜猜結果是什么
...全文
142
11
打赏
收藏
一個有趣的問題
CLEAR Create Cursor AAA(A N(16,5)) Insert Into AAA(A) Values (2684.18000) ?Int(AAA.A*100000) Create Cursor AAA(A N(16,5)) Insert Into AAA(A) Values (2685.18000) ?Int(AAA.A*100000) 大家猜猜結果是什么
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
s_111111
2008-07-17
打赏
举报
回复
小問題還是蠻多的呀
s_111111
2008-07-11
打赏
举报
回复
是INT()函數的一個BUG嗎,為什么還不改正他,都20年了
十豆三
2008-07-11
打赏
举报
回复
上面用ROUND是因为4舍5入了。
十豆三
2008-07-11
打赏
举报
回复
所以我还是认为是由处理器计算的造成的。
十豆三
2008-07-11
打赏
举报
回复
?str(9.2222,50,18)
如果是Int的Bug,这个又如何解释?
都市夜猫
2008-07-09
打赏
举报
回复
应该还是精度问题
v1 = 2684.18000
v2 = 2684.1800
? v1*100000, int(v1*100000)
? v2*100000, int(v2*100000)
十豆三
2008-07-09
打赏
举报
回复
x=1234567890.0987654321
? x
你的问题也这个差不多,是处理器计算的造成的。
s_111111
2008-07-09
打赏
举报
回复
但是我這個問題不是精度問題吧,他們長度都一樣,但結果不一樣。
結果是:268417999
268518000
表明他不是長度精度問題。
十豆三
2008-07-09
打赏
举报
回复
数字精度
当在 数值型 字段中存储浮点数字时,Visual FoxPro 中的数字精度被限定为大约 15 个阿拉伯数字。因此,当把十进制转换为二进制数、以二进制存储带有无限循环小数值的数字、执行多个重复运算,以及在 Character 字段和以二进制格式在内存变量中存储数字值时,超过 15 个阿拉伯数字的精度可能被丢失。
这个限制是基于 Pentium 系列处理器计算和存储浮点数的方式,并遵从了电机工程师协会(IEEE)以二进制格式操作浮点数字的浮点规范。这个标准使浮点数字以合理的空间数被存储并实现更快速的计算。
例如,分数 1/10 可以被表示为十进制值 0.1。然而,当以二进制存储 1/10 时,十进制值就不同于该分数了。相反,该分数是一个循环的二进制小数 0001100110011100110011 等等。这种数字类型不能在有限的内存中被表示,因此,当以二进制存储时,十进制值被四舍五入。
有关要求更高精度的值,请参见 双精度型字段类型。
有关浮点数字被存储和 Pentium 系列处理器如何处理它们的计算的更详细信息,请参见 http://support.microsoft.com/default.aspx?scid=kb;en-us;Q78113 上的 Microsoft Knowledge Base Article - Q78113, "XL: Floating-Point Arithmetic May Give Inaccurate Results"。
下面示例举例说明了 数值型 数据类型对于浮点数数字精度方面的限制:
复制代码
x=1234567890.0987654321
? x
结果是 1234567890.0987650000。
cbl518
2008-07-09
打赏
举报
回复
这是vfP 的 int() 函数,20 多年前就存在的一个问题!
用 ROUND 函数替代 INT 函数:
CLEAR
Create Cursor AAA(A N(16,5))
Insert Into AAA(A) Values (2684.18000)
?ROUND(AAA.A*100000,0)
Create Cursor AAA(A N(16,5))
Insert Into AAA(A) Values (2685.18000)
?ROUND(AAA.A*100000,0)
s_111111
2008-07-09
打赏
举报
回复
还是不很清楚,我看他并没有超过他的最大长度,小数位也没超过
就拿2685.18000和2684.18000比较,如果是精度问题的话,转换整形后应该都变才对。
2048.18000以1递增直到2684.18000之间的每个数乘以100000再转整形后,小数位都会变为17999,如果是精度问题的话该怎么解释
一个
有趣
的规划问题
本文探讨了一个
有趣
的运输问题:如何在特定条件下将尽可能多的薯片从菜鸟驿站运回家。通过制定有效的策略并使用Python实现算法,最终确定了最优解。
一个
有趣
的问题,讨论讨论
讨论了一个
有趣
的问题:项目提前完成看似利好,但如果因此产生额外成本(如存货费用),是否还算是成功?文章通过一个茶壶制造案例说明了项目管理中时间和成本之间的平衡问题。
一个
有趣
的盛水问题
本文介绍了一个
有趣
的用水壶取水问题,仅用5升和6升两个水壶如何准确取得3升水的方法。通过一系列倒水步骤,最终实现目标。
一个
有趣
的抛硬币问题
本文深入探讨了一个
有趣
的概率问题:如何通过数学计算预测连续抛掷硬币直到出现两次相同面朝上的平均次数。通过递归思想建立等式,最终得出平均抛掷次数为6次,揭示了概率与数学计算之间的奇妙联系。
JavaScript中一个
有趣
的问题
本文探讨了一个
有趣
的JavaScript问题:使用parseInt函数处理特定字符串时的行为。通过分析代码片段,揭示了parseInt函数在不同输入情况下的表现,为理解JavaScript中的类型转换提供了一个深入浅出的例子。
VFP
2,749
社区成员
29,142
社区内容
发帖
与我相关
我的任务
VFP
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
复制链接
扫一扫
分享
社区描述
VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章