Debug("FLT_MAX = %.40f", FLT_MAX);
Debug("FLT_MIN = %.40f", FLT_MIN);
Debug("FLT_EPSILON = %.40f", FLT_EPSILON);
-
- ParanoidNumber a("0.3");
- Debug("start at %s", a.Str().c_str());
- cout << "0.3 ";
- float fa = 0.3;
- double da = 0.3;
+ Debug("Sizeof ParanoidNumber::digit_t is %u", sizeof(ParanoidNumber::digit_t));
+ Debug("Sizeof ParanoidNumber is %u", sizeof(ParanoidNumber));
+ Debug("Sizeof double is %u", sizeof(double));
+ Debug("Sizeof ParanoidNumber* %u", sizeof(ParanoidNumber*));
+
+ string token("");
+ cin >> token;
+ ParanoidNumber a(token.c_str());
+ double da = a.ToDouble();
+ float fa = da;
while (cin.good())
{
char op;
- double db;
- cin >> op >> db;
- float fb(db);
- ParanoidNumber b(fb);
+ cin >> op;
+ token = "";
+ for (char c = cin.peek(); cin.good() && !iswspace(c); c = cin.peek())
+ {
+ if (c == '+' || c == '-' || c == '*' || c == '/')
+ {
+ break;
+ }
+ token += c;
+ c = cin.get();
+ }
+ Debug("String is %s", token.c_str());
+ float fb = strtof(token.c_str(), NULL);
+ double db = strtod(token.c_str(), NULL);
+ ParanoidNumber b(token.c_str());
+ Debug("b is {%s} %lf", b.Str().c_str(), b.ToDouble());
switch (op)
{
case '+':
Debug("a is: %s", a.Str().c_str());
Debug("a as double: %.40f\n", a.ToDouble());
+ Debug("a as float: %.40f\n", a.ToFloat());
+ Debug("a as int64_t: %ld\n", a.Convert<int64_t>());
Debug("floats give: %.40f\n", fa);
Debug("double gives: %.40f\n", da);