十年网站开发经验 + 多家企业客户 + 靠谱的建站团队
量身定制 + 运营维护+专业推广+无忧售后,网站问题一站解决
单精度只保留6位有效数字。另外双精度可以保留15位数字。这是2者最明显的区别。
目前创新互联建站已为上千家的企业提供了网站建设、域名、网站空间、绵阳服务器托管、企业网站设计、金水网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
仅仅是普通表达式的话,定义数据类型,比如从单精度改为双精度,如果想保留小数点位数,用formatnumber来处理。如果是某个算法的精度,就要复杂一些,要定义一个误差,在算法迭代过程中,用while语句判断计算结果的残差是否小于定义的误差值,至于残差如何计算,与你的算法有关
可以自己建立一个判断double精度的程序,如下:
Private Function F(Dou As Double) As Integer
Dim St As String, Ddot As Integer '声明
St = Str(Dou) '把这个double转换成字符串
Ddot = Instr(St, ".") 'Ddot代表点(.)的位置
If Ddot = 0 Then Exit(0) '找不到点(.),精度当然是零~
Do While Right(St, 1) = 0 '若找得到点(.),先去掉double右边多余的0
St = Left(St, Len(St - 1)) '去掉一个0
Loop
Exit(Len(St) - Ddot) '末尾没有0的double的长度减去点(.)的位置,得到的就是点后面有几个数字,也就是lz说的精度~
End Function
'写完以后如果要求精度就调用这个过程就可以了。
'例如求544.42400的精度,存在a里面(a As Integer)这样写:
Dim a As Integer
a = F(544.42400)
用这个函数把
Math.Round 方法 (Decimal, Int32)
将小数值舍入到指定精度。
命名空间: System
程序集: mscorlib(在 mscorlib.dll 中)
语法
Visual Basic(用法)
Dim d As Decimal
Dim decimals As Integer
Dim returnValue As Decimal
returnValue = Math.Round(d, decimals)
参数
d
类型:System.Decimal
要舍入的小数。
decimals
类型:System.Int32
返回值中的小数位数(精度)。
返回值
类型:System.Decimal
精度等于 decimals,最接近 d 的数字。
Math.Round(3.4666666, 4) 结果是 3.4667.