在「。」之後,我收到一個最多4位數的小數。我知道這個數字是以毫克爲單位的。在不損失精度的情況下舍入到最佳單位
我必須找到數字的最佳匹配單位(毫克,克,千克)。
了一個例子,如果我收到
編輯
116000000.0000毫克,它會返回116.0000公斤
66990000.0000毫克,它會返回66.9900千克
49000010.0000毫克,這是怎麼回事返回49000.0100克
49000000.0100毫克,它將返回49000000.0100毫克
1001毫克,它會返回1.0010克
1010毫克,它會返回1.0100克
1000毫克,它會返回0.0010公斤
1100毫克,它會返回0.0011千克
135005毫克,這是怎麼回事返回135.0050克
和最後一個樣本10013500毫克,它會返回10.0135千克
我目前使用此代碼,我認爲看/是醜陋,可能會失敗
Dim temp As Decimal
Dim u = New List(Of Integer)(New Integer() {1, 1000, 1000000})
For i = 0 To u.Count - 1
temp = CDec(qty/u(i))
If (temp * 10000) - Math.Truncate(temp * 10000) <> 0 AndAlso (temp * 10000) - Math.Truncate(temp * 10000) < 1 Then
temp = CDec(qty/u(i - 1))
Exit For
End If
Next
qty = temp
有沒有更好/更好的方式做我的工作?
用於精密編輯
的輸入可以是0.0001和最大值之間的任何小數的是一個小數可以在.NET接受
輸出需要被舍入到最佳單元,其具有最多4個「」後面的數字。而不會丟失任何精度
你可能想看看http://stackoverflow.com/questions/808104/engineering-notation-in-c了。 – Leonidas 2010-01-26 16:27:13
的輸入別沒有意義,前3個是整數,但最後有一個小數點? – 2010-01-26 16:29:26
@Ian Quigley,我更新了我的問題 – Fredou 2010-01-26 16:35:21