Rust で f64 浮動小数点数を指定された桁数に丸めるにはどうすればよいでしょうか?
ベストアンサー1
これを表示目的のみに使用したい場合は、書式設定構文が組み込まれているprintln!()
たとえば、小数点以下 2 桁に丸めた数値を出力するには、次の{:.2}
書式指定子を使用します。
fn main() {
let x = 12.34567;
println!("{:.2}", x);
}
丸められた数値を文字列にしたい場合は、format!()
大きい。
数値を丸めて結果を別の数値として返したい場合は、その数値に10の累乗を掛けて、round
同じ累乗で割ります。たとえば、小数点以下 2 桁に丸める場合は、10 2 = 100 を使用します。
fn main() {
let x = 12.34567_f64;
let y = (x * 100.0).round() / 100.0;
println!("{:.5} {:.5}", x, y);
}
これは を印刷します12.34567 12.35000
。
コンパイル時に小数点以下の桁数が分からない場合は、次のようにします。powi
関連する電力を効率的に計算します。
これは非常に大きな数では機能しなくなることに注意してください。具体的には、std::f64::MAX / power
( power
10 の累乗、たとえば上記の例では 100) より大きい数は乗算で無限大になり、乗算後も無限大のままになります。ただし、 2 53f64
より大きい数については小数点以下を表すことができません(つまり、常に整数です)。そのため、このような大きな数を特別なケースにして、その数自体を返すことができます。