vb计算为什么会得到这样的结果??
不只是科学记数法的问题!
主要是因为计算机中的数字都是以二进制存储的,就会造成维数的误差。
但是,这个误差不想你想象的那么大。
如果是Single类型的数,那么他的影响相对的就比较大了,因为他的第七位就可能是不准确的。
比如你的计算结果,7.80000686645508E-02,其误差就是0.0000000686645508
如果是Double类型的数,其误差一般的15位有效数字的末尾一位。
比如你的计算结果,7.80000000000003E-02,其误差就是就是:0.0000000000000003
这个数字一般的不会影响你的计算结果,但是会影响你的格式化输出结果。使用Format函数的时候要特别注意啊!追问
主要是因为计算机中的数字都是以二进制存储的,就会造成维数的误差。
但是,这个误差不想你想象的那么大。
如果是Single类型的数,那么他的影响相对的就比较大了,因为他的第七位就可能是不准确的。
比如你的计算结果,7.80000686645508E-02,其误差就是0.0000000686645508
如果是Double类型的数,其误差一般的15位有效数字的末尾一位。
比如你的计算结果,7.80000000000003E-02,其误差就是就是:0.0000000000000003
这个数字一般的不会影响你的计算结果,但是会影响你的格式化输出结果。使用Format函数的时候要特别注意啊!追问
相减后要得到正确的数字,只能采用format方式么?有没其他办法呀?
追答只有采用Format函数处理,或者使用Round函数。
温馨提示:答案为网友推荐,仅供参考
第1个回答 2013-10-14
CSng是转换为 Integer 类型的数据
CDbl 是Double 类型的数据,
计算结果表示的是科学计数法方式,自己可以用 Format(xxx,"#0.00")转换为想要的格式...
如: Text3.Text=Format$(a3,"#0.00")表示保留两位小数追问
CDbl 是Double 类型的数据,
计算结果表示的是科学计数法方式,自己可以用 Format(xxx,"#0.00")转换为想要的格式...
如: Text3.Text=Format$(a3,"#0.00")表示保留两位小数追问
假如是中间计算过程,岂不最终结果误差很大???
追答所以在中间计算的时候最好选择Double 类型的数据进行计算,在最后的时候来处理结果。如:要保留多少位小数...
第2个回答 2013-10-14
其实,使用科学计数法,只要有效位数足够,精度还是很高的。
第3个回答 2013-10-14
科学计数法吧