2011-08-08 4 views
5

可能性の重複:
C# Double - ToString() formatting with two decimal places but no roundingC#では、丸めを行わずに必要な小数点以下の数値を取得するにはどうすればよいですか?

私は、浮動小数点数を使用していると私は、実行されている任意の四捨五入せずに小数点以下の桁数を取得したいです。

たとえば、 float x = 12.6789 小数点以下2桁にしたい場合は、丸めを行うときに(x = 12.67)、NOT(x = 12.68)を取得する必要があります。

Plzはこれを行う最も良い方法です。

+0

何を試しましたか?何がうまくいかなかったのですか?あなたのコードを投稿し、どこに問題があるのか​​を説明してください。 – Oded

答えて

8

あなたはこのためにMath.Truncate()を使用することができるはずです。

decimal x = 12.6789m; 
x = Math.Truncate(x * 100)/100; //This will output 12.67 
3

あなたはキャストすることによって、これを達成することができます:

float x = 12.6789; 
float result = ((int)(x * 100.0))/100.0; 
1

あり、このためのフレームワークの呼び出しは、おそらくですが、あなたは常に1を書くことができますlike:

//Scale up, floor, then round down. 
//ie: 1.557 
// scaled up: 155.7 
// floord: 155 
// scaled down: 1.55 
public float MyTruncate(float f, int precision){ 
    float scale = precision * 10; 
    return (Math.Floor(f * scale))/scale; 
} 
関連する問題