私はこの番号を持っています: 1234.5678 (テキストとして)
この数値は、ドットの後に 2 つの数値のみを使用して、2 倍にする必要があります。
しかし、数を四捨五入せずに
1234.5678 で - 私は 1234.57 を取得します
12.899999で-12.90を取得します
どうすればできますか?
次のように、必要なものを取得できるはずです。
number.ToString("#0.00")
100 を掛け、数値の floor() を取り、もう一度 100 で割ります。
必要な結果を投稿していませんが、 1234.56と 12.89 が表示されるように、切り捨てが必要だと思います。試す:
decimal d = 1234.89999M;
Console.WriteLine(Math.Truncate(d * 100) / 100);
これは、これらの数値を double として正確に表すことができないためです。変換、丸め、テキストとして再印刷すると、精度が失われます。
代わりに「小数」を使用してください。
この浮動小数点演算を考えてみましょう!
var num = "1234.5678";
var ans = String.Empty;
if( !String.IsNullOrEmpty(num) && num.Contains('.') ) // per comment
{
ans = num.Substring(0, num.IndexOf('.') + 3);
}
これでうまくいくはずです。
string rawVal = "1234.5678";
System.Math.Floor((double.parse(rawVal)) * 100) / 100;
これはうまくいきませんか?
double d = 1234.5678;
double rounded =Math.Round(d, 2);