mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-08-01 21:47:46 +00:00
uucore: format: extendedbigdecimal: Implement From<f64>
Allows easier conversion.
This commit is contained in:
parent
9355200901
commit
241e2291bd
1 changed files with 23 additions and 0 deletions
|
@ -25,6 +25,7 @@ use std::fmt::Display;
|
||||||
use std::ops::Add;
|
use std::ops::Add;
|
||||||
|
|
||||||
use bigdecimal::BigDecimal;
|
use bigdecimal::BigDecimal;
|
||||||
|
use num_traits::FromPrimitive;
|
||||||
use num_traits::Zero;
|
use num_traits::Zero;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
|
@ -76,6 +77,28 @@ pub enum ExtendedBigDecimal {
|
||||||
MinusNan,
|
MinusNan,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
impl From<f64> for ExtendedBigDecimal {
|
||||||
|
fn from(val: f64) -> Self {
|
||||||
|
if val.is_nan() {
|
||||||
|
if val.is_sign_negative() {
|
||||||
|
ExtendedBigDecimal::MinusNan
|
||||||
|
} else {
|
||||||
|
ExtendedBigDecimal::Nan
|
||||||
|
}
|
||||||
|
} else if val.is_infinite() {
|
||||||
|
if val.is_sign_negative() {
|
||||||
|
ExtendedBigDecimal::MinusInfinity
|
||||||
|
} else {
|
||||||
|
ExtendedBigDecimal::Infinity
|
||||||
|
}
|
||||||
|
} else if val.is_zero() && val.is_sign_negative() {
|
||||||
|
ExtendedBigDecimal::MinusZero
|
||||||
|
} else {
|
||||||
|
ExtendedBigDecimal::BigDecimal(BigDecimal::from_f64(val).unwrap())
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
impl ExtendedBigDecimal {
|
impl ExtendedBigDecimal {
|
||||||
pub fn zero() -> Self {
|
pub fn zero() -> Self {
|
||||||
Self::BigDecimal(0.into())
|
Self::BigDecimal(0.into())
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue