当前位置:编程学习 > VB >>

急 3*4.8-14.4=-1.77635683940025E-15

请教为什么:
Private Sub Form_Load()
  Text1 = 3 * 4.8 - 14.4
End Sub

等于"-1.77635683940025E-15"
谢谢! --------------------编程问答-------------------- Private Sub Form_Load() 
    Text1 = 3 * 4.8 - 14.4 
    text1.text=format(text1.text,"##0.00")
End   Sub 
--------------------编程问答-------------------- 浮点数的小数是 2 进制表示的,与 10 进制小数存在误差。

你可以使用 Currency 类型,它是定点类型:

Private Sub Form_Load()
    Text1 = CCur(3 * 4.8 - 14.4) '类型转换函数,转成 Currency 类型
End Sub 

--------------------编程问答-------------------- 啰嗦两句。2 进制小数的各个小数位是 0.5, 0.25, 0.125, 0.0625 ... 当它用来表示十进制数时,只能用这些数的和来表示。有些 10 进制小数,无法用 2 进制小数精确表示,只有当小数位无穷大时,才能够无穷近似。但是你的计算机数位是有限的,所有加减结果常常有误差。 --------------------编程问答-------------------- 楼上正解,可以这样

Private Sub Form_Load()
    Dim c@
    c = 3 * 4.8 - 14.4
    Text1 = c
End Sub --------------------编程问答-------------------- 到俺机器上又是另一幅景像。format吧。
--------------------编程问答-------------------- 同意of123  --------------------编程问答-------------------- 这是计算机精确度问题,大学里有一门数学数值代数,有一节专门讲计算机0与实际数学0的关系的。在你的计算机看来"-1.77635683940025E-15就是0了。哈哈,对于浮点数的计算就要考虑有效数字啊,对不对?
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,