首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VB6和VB.NET的精度差

VB6和VB.NET的精度差
EN

Stack Overflow用户
提问于 2015-06-05 15:37:41
回答 1查看 340关注 0票数 0

对于相同的代码,我在VB 6和VB.NET中得到了两个不同的结果,它处理除法操作。

代码语言:javascript
复制
ABC = 9.999728
result = IIf(ABC <> 0, 1 / ABC, 10 ^ 10)

在VB6中,我得到了结果= 0.1000027

在VB.NET中,结果是0.100002721

然而,当我在CSng(Val(CStr(result)))中使用VB.NET时,我得到了0.1000027。

1)为什么VB.NET产生的精度与VB6不同?

2)为什么CSng(Val(CStr(result)))产生与VB6相同的精度?

3)这看起来既简单又琐碎,但这个问题是重复的,并传播到我的最终结果,这与VB6中的等价结果不同。我是否可以安全地假设VB.NET结果比VB6更精确,并完全丢弃VB6结果?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-06-08 20:59:09

在VB6中:

代码语言:javascript
复制
Dim ABC, result

ABC = 9.999728
result = IIf(ABC <> 0, 1 / ABC, 10 ^ 10)
MsgBox result

显示:

代码语言:javascript
复制
0.100002720073986

随机使用CSng()当然会截断精度,应该像瘟疫一样避免过时的Val()函数。如果您想要一个双人,那么使用CDbl()代替。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30670540

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档