## NASA 的 JPL 回答「你們用的圓周率是 3.14 嗎？」的問題

NASAJPL 回答了他們所使用的圓周率：「How Many Decimals of Pi Do We Really Need?」。

For JPL's highest accuracy calculations, which are for interplanetary navigation, we use 3.141592653589793.

The most distant spacecraft from Earth is Voyager 1. It is about 12.5 billion miles away.

It turns out that our calculated circumference of the 25 billion mile diameter circle would be wrong by 1.5 inches. Think about that. We have a circle more than 78 billion miles around, and our calculation of that distance would be off by perhaps less than the length of your little finger.

## 0.1 + 0.2 = 0.30000000000000004

Your language isn't broken, it's doing floating point math. Computers can only natively store integers, so they need some way of representing decimal numbers. This representation comes with some degree of inaccuracy. That's why, more often than not, .1 + .2 != .3.

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. The prime factors of 10 are 2 and 5. So 1/2, 1/4, 1/5, 1/8, and 1/10 can all be expressed cleanly because the denominators all use prime factors of 10. In contrast, 1/3, 1/6, and 1/7 are all repeating decimals because their denominators use a prime factor of 3 or 7. In binary (or base 2), the only prime factor is 2. So you can only express fractions cleanly which only contain 2 as a prime factor. In binary, 1/2, 1/4, 1/8 would all be expressed cleanly as decimals. While, 1/5 or 1/10 would be repeating decimals. So 0.1 and 0.2 (1/10 and 1/5) while clean decimals in a base 10 system, are repeating decimals in the base 2 system the computer is operating in. When you do math on these repeating decimals, you end up with leftovers which carry over when you convert the computer's base 2 (binary) number into a more human readable base 10 number.

## DEC64 浮點數 value = coefficient * 10exponent

0 與 NaN 是特別處理：

There are 255 possible representations of zero. They are all considered to be equal.

There is a special value called nan that has a coefficient of 0 and an exponent of -128. The result of division by zero is nan. nan is also the result of operations that produce results that are too large to be represented. nan is equal to itself.

```   Domain Name: DEC64.COM
Registrar: 1 & 1 INTERNET AG
Whois Server: whois.schlund.info
Referral URL: http://1and1.com
Name Server: NS57.1AND1.COM
Name Server: NS58.1AND1.COM
Status: ok
Updated Date: 03-jun-2013
Creation Date: 02-jun-2009
Expiration Date: 02-jun-2014```