1. ホーム
  2. c#

[解決済み] 丸めずに小数点以下2桁を切り捨てる

2022-02-12 06:13:16

質問

例えば、3.4679という値があって、3.46にしたい場合、切り上げずに小数点以下2桁に切り捨てるにはどうしたらよいでしょうか?

以下を試しましたが、3つとも3.47になってしまいます。

void Main()
{
    Console.Write(Math.Round(3.4679, 2,MidpointRounding.ToEven));
    Console.Write(Math.Round(3.4679, 2,MidpointRounding.AwayFromZero));
    Console.Write(Math.Round(3.4679, 2));
}

これは3.46を返しますが、何となく汚い感じがします。

void Main()
{
    Console.Write(Math.Round(3.46799999999 -.005 , 2));
}

解決方法は?

value = Math.Truncate(100 * value) / 100;

このような分数は浮動小数点では正確に表現できないので注意しましょう。