committed by
Nicolás Hatcher Andrés
parent
1053d00d22
commit
eb76d8dd23
@@ -24,11 +24,22 @@ impl Model {
|
||||
CalcResult::Number(f) => Ok(NumberOrArray::Number(f)),
|
||||
CalcResult::String(s) => match s.parse::<f64>() {
|
||||
Ok(f) => Ok(NumberOrArray::Number(f)),
|
||||
_ => Err(CalcResult::new_error(
|
||||
Error::VALUE,
|
||||
cell,
|
||||
"Expecting number".to_string(),
|
||||
)),
|
||||
_ => {
|
||||
let mut currencies = vec!["$", "€"];
|
||||
let currency = &self.locale.currency.symbol;
|
||||
if !currencies.iter().any(|e| e == currency) {
|
||||
currencies.push(currency);
|
||||
}
|
||||
// Try to parse as a formatted number (e.g., dates, currencies, percentages)
|
||||
if let Ok((v, _number_format)) = parse_formatted_number(&s, ¤cies) {
|
||||
return Ok(NumberOrArray::Number(v));
|
||||
}
|
||||
Err(CalcResult::new_error(
|
||||
Error::VALUE,
|
||||
cell,
|
||||
"Expecting number".to_string(),
|
||||
))
|
||||
}
|
||||
},
|
||||
CalcResult::Boolean(f) => {
|
||||
if f {
|
||||
|
||||
@@ -1233,11 +1233,15 @@ impl Model {
|
||||
if !(-15.0..=15.0).contains(&num_digits) {
|
||||
return CalcResult::Number(value);
|
||||
}
|
||||
CalcResult::Number(if value >= 0.0 {
|
||||
let v = if value >= 0.0 {
|
||||
f64::floor(value * 10f64.powf(num_digits)) / 10f64.powf(num_digits)
|
||||
} else {
|
||||
f64::ceil(value * 10f64.powf(num_digits)) / 10f64.powf(num_digits)
|
||||
})
|
||||
};
|
||||
if value.is_finite() && v.is_infinite() {
|
||||
return CalcResult::Number(value);
|
||||
}
|
||||
CalcResult::Number(v)
|
||||
}
|
||||
|
||||
single_number_fn!(fn_log10, |f| if f <= 0.0 {
|
||||
|
||||
Reference in New Issue
Block a user