首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

CDbl 和 CDec 的区别()

2012-02-28 
CDbl和 CDec 的区别(求助)在做一个vb.net项目,其中有些画面项目,输入的值要求保留到小数以下两位,即三位以

CDbl 和 CDec 的区别(求助)
在做一个vb.net项目,其中有些画面项目,输入的值要求保留到小数以下两位,即三位以后的舍去
 我用以下的代码实现
 Me.A.Text = CStr(Fix(CDbl(Me.A.Text) * 100) / 100)
上周五测试时候,发现输入11.20后,经过上面的代码计算,显示为11.19
 debug时候发现,Me.A.Text='11.20' CDbl(Me.A.Text)=11.19999999999 CDbl(Me.A.Text) * 100=1119.99999999999...
所以结果是11.19,虽然不明白但是别人的程序这一点代码是
 Me.A.Text = CStr(Fix(CDec(Me.A.Text) * 100) / 100)
也就是用Cdec,没有问题,虽然不太明白为什么这样,还是就都改成了用Cdec.

今天又拿修改之前的程序测试,居然没问题。debug时候
CDbl(Me.A.Text)=11.20 CDbl(Me.A.Text) * 100=1120
怎么都测不是上周五得到11.19的结果。
当然CDec还是没问题,结果11.20。

现在都弄糊涂了,到底怎么才能出现那个错误的结果,错误结果还原不出来,也就不知道修改得是否正确。现在都怀疑是否应该修改。

请教各位大虾,CDbl 和 CDec 有什么区别,什么时候用哪个比较好,还有上面我的那个Cdebl怎么有时候正确有时候不正确呀?多谢!



[解决办法]
CDbl 
 Double 数据类型 (Visual Basic) 
 负值取值范围为 -1.79769313486231570E+308 到 -4.94065645841246544E-324;正值取值范围为 4.94065645841246544E-324 到 1.79769313486231570E+308。
 
CDec 
 Decimal 数据类型 (Visual Basic) 
 对于零变比数值,即无小数位数值,为 +/-79,228,162,514,264,337,593,543,950,335。对于具有 28 位小数位的数字,范围是 ?+/-7.9228162514264337593543950335。最小的可用非零数是 0.0000000000000000000000000001 (+/-1E-28)。
 

[解决办法]
在通常发生单精度、双精度或整型运算的情况下,使用 CDec 强制执行小数运算。

[解决办法]
CDbl(expression) 转换表达式为 Double 型态。 CDec(expression) 转换表达式为 Decimal 型态。
[解决办法]
double,decimal精度不一样,浮点运算存在误差

热点排行