Dart で double を小数点以下の精度で丸めるにはどうすればよいでしょうか? 質問する

Dart で double を小数点以下の精度で丸めるにはどうすればよいでしょうか? 質問する

double が与えられた場合、 PHP の round() 関数と同様に、小数点以下の指定された精度のポイント数に丸めたいと思います。

Dart ドキュメントで最も近いものは double.toStringAsPrecision() ですが、これは小数点の前の数字を精度の合計ポイントに含めるため、私が必要としているものではありません。

たとえば、toStringAsPrecision(3) を使用すると、次のようになります。

0.123456789 rounds to 0.123  
9.123456789 rounds to 9.12  
98.123456789 rounds to 98.1  
987.123456789 rounds to 987  
9876.123456789 rounds to 9.88e+3

数値の絶対値が大きくなるにつれて、小数点以下の精度も低下します。

ベストアンサー1

ドキュメントを参照してくださいnum.toStringAsFixed()

toStringAsFixed(int fractionDigits) → String

この数値の小数点文字列表現。

文字列表現を計算する前にこれを double に変換します。

  • この絶対値が より大きいか等しい場合、10^21このメソッドは によって計算された指数表現を返しますthis.toStringAsExponential()

    例:

    1000000000000000000000.toStringAsExponential(3); // 1.000e+21
    
  • fractionDigitsそれ以外の場合、結果は小数点以下の桁数に最も近い文字列表現になります。fractionDigits等しい場合0は小数点は省略されます。

    パラメータはfractionDigits次を満たす整数である必要があります: 0 <= fractionDigits <= 20

    例:

    1.toStringAsFixed(3);  // 1.000
    (4321.12345678).toStringAsFixed(3);  // 4321.123
    (4321.12345678).toStringAsFixed(5);  // 4321.12346
    123456789012345678901.toStringAsFixed(3);  // 123456789012345683968.000
    1000000000000000000000.toStringAsFixed(3); // 1e+21
    5.25.toStringAsFixed(0); // 5
    

おすすめ記事