2016-04-17 5 views
-2

は、私は私のプログラムは、小数点を入力したいという意志inputed数vb.netのWindowsアプリケーションで数字を切り取る方法は?

入力四捨五入しないことにより、小数点以下4桁で出力:0.6363636364

出力:完全性については0.6363

+1

[切り捨てない10進数の切り捨て]の可能な複製(http://stackoverflow.com/questions/329957/truncate-decimal-number-not-round-off) – Naruto

+0

サラマット!!!(ありがとう) – hotchongas

+0

@Naruto残念なことに、その 'duplicate'に関するすべての提案は、オーバーフローの可能性があります。指定された桁数に切り捨てるための最良の答えは、Tim Lloydの答えです。[小数点以下2桁を丸めずに切り捨てる](http://stackoverflow.com/a/14629365/3992902) – MrGadget

答えて

0

、OPが要求されたので、VBを

Module MyExtensions 
    <System.Runtime.CompilerServices.Extension> 
    Public Function TruncateDecimal(d As Decimal, decimals As Integer) As Decimal 
     Select Case True 
      Case decimals < 0 
       Throw New ArgumentOutOfRangeException("decimals", "Value must be in range 0-28.") 
      Case decimals > 28 
       Throw New ArgumentOutOfRangeException("decimals", "Value must be in range 0-28.") 
      Case decimals = 0 
       Return Math.Truncate(d) 
      Case Else 
       Dim IntegerPart As Decimal = Math.Truncate(d) 
       Dim ScalingFactor As Decimal = d - IntegerPart 
       Dim Multiplier As Decimal = Math.Pow(10, decimals) 

       ScalingFactor = Math.Truncate(ScalingFactor * Multiplier)/Multiplier 

       Return IntegerPart + ScalingFactor 
     End Select 
    End Function 
End Module 

使用法:

ソリューションは、ここで Truncate Two decimal places without roundingにティム・ロイドの回答に基づいて進延長です
Dim Value As Decimal = 0.6363636364 
Value = Value.TruncateDecimal(4) 
関連する問題