Hacker News new | ask | show | jobs
by TekMol 2490 days ago

    Computers can only natively store integers,
    so they need some way of representing decimal numbers.
Really? How do computers "natively" store integers?
3 comments

The intent of that sentence is a lot clearer if you also consider the subsequent text, which expands on the idea quite a bit:

> Computers can only natively store integers, so they need some way of representing decimal numbers. This representation comes with some degree of inaccuracy. . . Why does this happen? It's actually pretty simple. When you have a base 10 system (like ours), it can only express fractions that use a prime factor of the base. . .

Perhaps a more formally correct way to put it is that integers (and natural numbers) are the only numbers that a computer can manage in a way that behaves reasonably similarly to the corresponding mathematic set. Specifically, as long as you stick to their numeric range, computer ints behave like a group, just like real integers do. But IEEE floats break the definition of a field in every which way, so they're really not a great match for the rationals.

That said, you could represent the rationals as a pair of integers, and that would be better-behaved, and some programming languages do do that. But I'm not aware of an ISA that supports it directly.

It seems to just be layman shorthand for storing (not huge) integers as binary isn't lossy.
Storing integers as decimal (which computers can do easily) isn't lossy either.
I believe that's where "natively" comes in. If you store it in binary, you can operate on the values as numbers. If you do some decimal conversion, it's a blob of data. (Yes, there are BCD instructions but they're massively limited)
Decimal numbers are still "stored as binary" at the silicon level.
Unless you're on an IBM 1401... :D
z14 and Power 9 appear to support decimal integer and float. Does Python on those processors support their use?
I meant as opposed to floats, precision loss, etc.
Maybe you need to parse "decimal numbers" as "fractional numbers" rather than "expressed using a radix of 10".

Perhaps it would be better phrased as "computers can only store whole numbers, so they need some way to represent other information, including integers, rational numbers and approximations to complex numbers."