1. ホーム
  2. c#

[解決済み] C# 小数点以下2桁を丸める。切り捨てと丸め

2022-02-25 12:41:12

質問

floatを小数点以下2桁に丸めるとき、TruncateとRoundのどちらが有利か、不利か教えてください。

float number = 3.4567070
Math.Round(number, 2)
Math.Truncate(100 * number) / 100

どれが最適で効率的ですか?どのような場合にroundを使用し、どのような場合にtruncateを使用するのでしょうか?

どのように解決するのですか?

Truncateの方がわずかに効率的ですが、これらは非常に異なる機能です。

  • Math.Round は、指定された精度で入力に最も近い数を計算します。

    値を最も近い整数または指定された小数点以下の桁数に丸めます。

  • Math.Truncate は、小数点以下の任意の桁を実質的に無視します。常にゼロに最も近い整数に丸められます。

    数値の積分部分を計算します。

どの関数を使うべきかは、実装しようとしているロジックに完全に依存します。

各関数の出力例を簡単にご紹介します。

Input | Round | Truncate
------+-------+---------
 -1.6 |    -2 |       -1 
 -1.5 |    -2 |       -1 
 -1.4 |    -1 |       -1 
 -0.5 |     0 |        0 
  0.5 |     0 |        0 
  1.4 |     1 |        1 
  1.5 |     2 |        1 
  1.6 |     2 |        1