12 test_equal(f1.value(), 0);
14 test_equal(f2.value(), 10000);
16 test_equal(f3.value(), 31416);
17 fixed f4{2, 14159265};
18 test_equal(f4.value(), 21416);
19 test_equal(f2 + f4, f1 + f3);
20 test(f2 + f4 <= f1 + f3);
21 test(f2 + f4 >= f1 + f3);
29 test_equal(f2 + f4, f3 - f1);
30 test_equal(f2 * f3, f3);
31 test_equal(f3 / f2, f3);
41 test_equal(-f4, f1 - f4);
42 test_equal(-(-f4), f4);
44 test_equal(f4 + 1, f3);
46 test_equal(f4 + 2, f3);
48 test_equal(f4 + 1, f3);
54 test_equal(f4++, --f3);
57 test_equal(f4 / f3, f2);
58 test_equal(f4 - f3, f1);
60 test_equal(f4.to_string(),
"3.1416");
61 test_equal(f4.integer(), 3);
64 test_equal(f4.integer(), 3);
65 test_equal(f4.round(), 4);
67 test_equal(f3.integer(), 3);
68 test_equal((-f3).integer(), -3);
69 test_equal(f3.fraction(), 1416);
70 test_equal((-f3).fraction(), 1416);
79 test_equal(
fixed{123,2345500},
fixed(123,2346));
80 test_equal(
fixed{123,2345501},
fixed(123,2346));
81 test_equal(
fixed{123,2345499},
fixed(123,2345));
82 test_equal(
fixed{123,2346500},
fixed(123,2346));
83 test_equal(
fixed{123,2346501},
fixed(123,2347));
84 test_equal(
fixed{123,2346499},
fixed(123,2346));
85 test_equal(
fixed{123,2346400},
fixed(123,2346));
86 test_equal(
fixed{123,2346600},
fixed(123,2347));
95 test_equal(
fixed{-3.14159265}.
value(), -31416);
96 test_equal(
fixed{123,456789}.
value(), 1234568);
100 std::ostringstream out{};
101 out << f3 <<
" 3.14159265 " <<
fixed(-10,12) <<
" 3 421.4 end";
103 std::istringstream in{out.str()};
109 test_equal(f5.value(), -100012);
111 test_equal(f5.value(), 30000);
113 test_equal(f5.value(), 4214000);
114 test(not (in >> f5));
116 test_equal(
fixed{31.4159265},
fixed{31, 4159});
122 }
catch (std::invalid_argument
const& ex) {
Implement a fixed-point number class. Values have places places after the decimal point...
value_type value() const
Return the internal value.