Rustでの浮動小数点数から金額への変換方法


  1. 丸め処理を行わない変換:

    fn float_to_money(value: f64) -> i64 {
    (value * 100.0).round() as i64
    }
    fn main() {
    let amount: f64 = 1234.56;
    let money: i64 = float_to_money(amount);
    println!("金額: {}", money);
    }
  2. 丸め処理を行う変換(最も一般的な方法):

    use std::num::FpCategory;
    fn float_to_money(value: f64) -> i64 {
    match value.classify() {
        FpCategory::Nan | FpCategory::Infinite => panic!("無効な値です。"),
        _ => (value * 100.0).round() as i64,
    }
    }
    fn main() {
    let amount: f64 = 1234.56;
    let money: i64 = float_to_money(amount);
    println!("金額: {}", money);
    }
  3. カスタムの丸め処理を行う変換:

    use std::num::FpCategory;
    fn float_to_money(value: f64) -> i64 {
    match value.classify() {
        FpCategory::Nan | FpCategory::Infinite => panic!("無効な値です。"),
        _ => (value * 100.0 + 0.5).floor() as i64,
    }
    }
    fn main() {
    let amount: f64 = 1234.56;
    let money: i64 = float_to_money(amount);
    println!("金額: {}", money);
    }

これらの方法を使用して、浮動小数点数を金額に変換することができます。選択する方法は、アプリケーションの要件や使用する通貨のルールによって異なる場合があります。必要に応じて、カスタムの丸め処理ロジックを追加することもできます。