-
Notifications
You must be signed in to change notification settings - Fork 73
/
Copy pathsimple-math.rs
80 lines (65 loc) · 2.36 KB
/
simple-math.rs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
extern crate bigdecimal;
use bigdecimal::*;
use std::str::FromStr;
/* Default example output:
Hello, Big Decimals!
Input (0.8) with 10 decimals: 0.8 vs 0.8)
square 0.64
From Prim: 3.300000000000000
match test 33.90000000000000
24.00000000000000 + 34.00000000000000 = 58.00000000000000
sum mut: 48.00000000000000
0.000000000000000 IS equal to zero
24.00000000000000 / 1.000000000000000 = 24.00000000000000
24.0 / 1.000000000000000 = 24.0
24.0 / 1.5 = 16
24.000 / 1.50 = 16.0
*/
fn main() {
println!("Hello, Big Decimals!");
let input = "0.8";
let dec = BigDecimal::from_str(input).unwrap();
let float = f32::from_str(input).unwrap();
println!("Input ({}) with 10 decimals: {} vs {})", input, dec, float);
let bd_square = dec.square();
println!("square {}", bd_square);
let bd_from_prim = BigDecimal::from_f64(3.3);
println!("From Prim: {}", bd_from_prim.unwrap());
let bd_match: BigDecimal = match BigDecimal::from_f64(33.9) {
Some(bd) => bd,
None => BigDecimal::zero(),
};
println!("match test {}", bd_match);
let bd_add1 = &BigDecimal::from_f64(24.0).unwrap();
let bd_add2 = &BigDecimal::from_f64(34.0).unwrap();
print_sum(bd_add1, bd_add2);
let mut bd_add3 = BigDecimal::from_f64(24.0).unwrap();
let bd_add4 = BigDecimal::from_f64(24.0).unwrap();
bd_add3 += bd_add4;
println!("sum mut: {}", bd_add3);
let bd_nez = BigDecimal::from_f64(0.0).unwrap();
if bd_nez != BigDecimal::zero() {
println!("{} is not equal to zero", &bd_nez);
} else {
println!("{} IS equal to zero", &bd_nez);
}
let bd_div1 = &BigDecimal::from_f64(24.0).unwrap();
let bd_div2 = &BigDecimal::from_f64(1.0).unwrap();
print_division(bd_div1, bd_div2);
let bd_div1 = &BigDecimal::from_str("24.0").unwrap();
print_division(bd_div1, bd_div2);
let bd_num = &BigDecimal::from_str("24.0").unwrap();
let bd_den = &BigDecimal::from_str("1.5").unwrap();
print_division(bd_num, bd_den);
let bd_num = &BigDecimal::from_str("24.000").unwrap();
let bd_den = &BigDecimal::from_str("1.50").unwrap();
print_division(bd_num, bd_den);
}
fn print_sum(a: &BigDecimal, b: &BigDecimal) {
let sum = a + b;
println!("{} + {} = {}", a, b, sum);
}
fn print_division(num: &BigDecimal, den: &BigDecimal) {
let quotient = num / den;
println!("{} / {} = {}", num, den, quotient);
}