This is why we still have real calculators…

gnome-calculator fail

This is about scientific notation, and how Gnome Calculator still doesn’t do it correctly.

So I was checking a simple calculation today, and couldn’t find a proper calculator, so I reached for gnome-calculator on the desktop. That was a mistake.

It seems to think that

8×10¹²÷6×10⁹

comes to

1.333333333×10²¹

which is not correct. It would, if I’d  typed it as:

8×1×10¹²÷6×1×10⁹

You can only get the right answer (1333.333…) if you type

(8×10¹²)÷(6×10⁹)

so it’s clear that gnome-calculator isn’t apply the right exponentiation operator precedence when you hit ‘×10y’. It would have been so much better if gnome-calculator supported ‘E’ scientific notation (1.333E21 for 1.333×10²¹).

A bug is filed, but I don’t think I trust it any more. I’m looking at having a proper calculator again, or maybe invest in one of the delightful tiny HP clones from SwissMicros.com.

HP 49G

Almost forgot that I had a barely-used HP 49G in the cupboard. It was barely used because the thing eats AAA batteries. Who knew that Dollarama would have a pair of NiMH AAAs for only $2?

Update, 2021: Use galculator instead. It does the right thing, and supports RPN like a calculator should. You don’t need to remember any precedence rules when you have The Truth.

4 comments

  1. For 8×10¹²÷6×10⁹ is correct 1.333333333×10²¹ is correct!

    For (8×10¹²)÷(6×10⁹) or 8×10¹²÷(6×10⁹) is correct 1333.333!

    Commutative property baby!

  2. The computer can only do what you tell it to do.
    Following standard BIDMAS/BODMAS, and not entering [8×10¹²/(6×10⁹)], that 1.33×10²¹ is correct.
    Brackets -> Indices/Order -> *(Divide|Multiply)* -> (Add|Subtract)
    Division and multiplication are done in the same step, so it is just the straight order.
    gnome-calculator doesn’t have a separate (e/x‍1‍0‍^) symbol, literally [((8 * 10¹²) / 6) * 10⁹], following BIDMAS

  3. Nah, it’s gnome calculator doing it wrong. Every other calculator with an “EE” or “×10^x” button understands that the × in ‘8×10¹²’ is at the highest precedence, and isn’t the same as typing 8 times 10¹². It’s scientific notation, a shortcut for typing 8000000000000. There’s nothing to take precedence over anything here: there’s just one division operator.

    Even my Commodore 64 gets it right:
    PRINT 8E12 / 6E9
    1333.33333

Leave a comment

Your email address will not be published. Required fields are marked *