sparc で使われている浮動小数点形式は IEEE 754 形式。
これは、符号ビットと指数部、仮数部で数を表現している。計算精度にとって重要なのは仮数部。
gooで検索したところ、計算機システム序論というサイトを見つけた。計算機で扱う数の表現について詳しく書いてある。
また、/usr/include/values.h を参照すると、アーキテクチャ毎の浮動小数点形式がわかる。
float型は32bitを
として、浮動小数点形式を表現している。
符号 指数部 仮数部 1 8 23
float型では仮数部は 224個の数を表現することができる。
つまり、1+1+1+… としていって正確に計算できる数の最大値は 16,777,215。
double型は64bitを
として、浮動小数点形式を表現している。
符号 指数部 仮数部 1 11 52
double型では仮数部は 253個の数を表現することができる。
つまり、1+1+1+… としていって正確に計算できる数の最大値は 9,007,199,254,740,991。
整数型(short型(16bit)、long型(32bit))と、1+1+1+… としていって正確に計算できる数の最大値を比較すると、下表のようになる。
short型 32,767 long型 2,147,483,647 float型 16,777,215 double型 9,007,199,254,740,991