2017-11-04 32 views
0

vb.netで5桁の有効数字を取得するより良い方法はありますか?vb.netで5桁の有効数字を取得する良い方法はありますか?

Public Function priceSignficant() As Double 
    Dim lnPrice = Math.Log10(_price) 
    Dim floorLnPrice = Math.Floor(lnPrice) 
    Dim significantprice = 10^floorLnPrice 


    Return significantprice 
End Function 
Public Function priceSignificantDigit() As ULong 
    Dim pricesig = priceSignficant() 
    Dim ratio = _price/pricesig 
    Dim i = 0 
    Do 
     Dim closeenough = ratio - Math.Round(ratio) 
     Dim closeneough1 = Math.Abs(closeenough) 
     If closeneough1 > 0.000000001 Then 
      ratio *= 10 
      i += 1 
      If i > 5 Then 
       Exit Do 
      End If 
     Else 
      Exit Do 
     End If 
    Loop 

    Return CULng(ratio) 
End Function 

それは仕事の一種です - :

  436523423900000->43652 
     .0000000034543853658400003763746 -> 34543 

これは私の現在のコードです。

簡単な方法が必要です。正の数について

答えて

2

は、Log10と桁数を計算することができ、その後、単に分割を使用して(5を引く)この量によって数値をシフト:あなたは負の数を有する

Dim numberOfDigits = Math.Ceiling(Math.Log10(number)) 
Dim significantDigits = Math.Truncate(number * Math.Pow(10, 5 - numberOfDigits)) 

場合、絶対的に計算します値をMath.Absに設定し、上記の手順を続けます。

関連する問題