pub fn validate_decimal_to_f64_precision(
decimal_value: Decimal,
tolerance: f64,
) -> PrecisionValidationExpand description
Validate precision loss when converting Decimal to f64
This function checks if a Decimal can be accurately represented as f64 by performing a round-trip conversion and comparing the results.
§Arguments
decimal_value- The Decimal value to validatetolerance- Acceptable relative error (e.g., 1e-15 for very strict, 1e-12 for financial)
§Returns
A PrecisionValidation indicating the level of precision loss
§Example
use rust_decimal::Decimal;
use rust_decimal_macros::dec;
use rusty_common::decimal_utils::{validate_decimal_to_f64_precision, PrecisionValidation};
// High precision decimal that will lose precision
let high_precision = dec!(0.1111111111111111111111111111);
let validation = validate_decimal_to_f64_precision(high_precision, 1e-15);
assert!(matches!(validation, PrecisionValidation::SignificantLoss { .. }));
// Simple decimal that converts losslessly
let simple = dec!(123.45);
let validation = validate_decimal_to_f64_precision(simple, 1e-15);
assert_eq!(validation, PrecisionValidation::Lossless);