十年網(wǎng)站開發(fā)經(jīng)驗 + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊
量身定制 + 運(yùn)營維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
單精度只保留6位有效數(shù)字。另外雙精度可以保留15位數(shù)字。這是2者最明顯的區(qū)別。
目前創(chuàng)新互聯(lián)建站已為上千家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)站空間、綿陽服務(wù)器托管、企業(yè)網(wǎng)站設(shè)計、金水網(wǎng)站維護(hù)等服務(wù),公司將堅持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長,共同發(fā)展。
僅僅是普通表達(dá)式的話,定義數(shù)據(jù)類型,比如從單精度改為雙精度,如果想保留小數(shù)點位數(shù),用formatnumber來處理。如果是某個算法的精度,就要復(fù)雜一些,要定義一個誤差,在算法迭代過程中,用while語句判斷計算結(jié)果的殘差是否小于定義的誤差值,至于殘差如何計算,與你的算法有關(guān)
可以自己建立一個判斷double精度的程序,如下:
Private Function F(Dou As Double) As Integer
Dim St As String, Ddot As Integer '聲明
St = Str(Dou) '把這個double轉(zhuǎn)換成字符串
Ddot = Instr(St, ".") 'Ddot代表點(.)的位置
If Ddot = 0 Then Exit(0) '找不到點(.),精度當(dāng)然是零~
Do While Right(St, 1) = 0 '若找得到點(.),先去掉double右邊多余的0
St = Left(St, Len(St - 1)) '去掉一個0
Loop
Exit(Len(St) - Ddot) '末尾沒有0的double的長度減去點(.)的位置,得到的就是點后面有幾個數(shù)字,也就是lz說的精度~
End Function
'寫完以后如果要求精度就調(diào)用這個過程就可以了。
'例如求544.42400的精度,存在a里面(a As Integer)這樣寫:
Dim a As Integer
a = F(544.42400)
用這個函數(shù)把
Math.Round 方法 (Decimal, Int32)
將小數(shù)值舍入到指定精度。
命名空間: System
程序集: mscorlib(在 mscorlib.dll 中)
語法
Visual Basic(用法)
Dim d As Decimal
Dim decimals As Integer
Dim returnValue As Decimal
returnValue = Math.Round(d, decimals)
參數(shù)
d
類型:System.Decimal
要舍入的小數(shù)。
decimals
類型:System.Int32
返回值中的小數(shù)位數(shù)(精度)。
返回值
類型:System.Decimal
精度等于 decimals,最接近 d 的數(shù)字。
Math.Round(3.4666666, 4) 結(jié)果是 3.4667.