浮動小数点型
float
をdouble
に置き換えると、別の意味で驚くべき結果になる。// ...

 double result = 0;

// ...

 if (result == 1) {
 writeln("As expected: 1");

 } else {
 writeln("DIFFERENT: ", result);
 }
値は
result == 1
の比較に失敗しているが、1として出力されている。異なる: 1
この意外な結果は、浮動小数点値の出力形式に関係している。小数点以下の桁数を増やすと、値のより正確な近似値が表示される。 (出力のフォーマットについては、後の章で説明する。)
writefln("DIFFERENT: %.20f", result);
異なる: 1.00000000000000066613
- 3つの
int
を3つのdouble
に置き換えるだけで十分だ:	double first;
	double second;

	// ...

	double result;
- 以下のプログラムは、5つ以上の変数が必要になった場合、どれだけ複雑になるかを示している:
import std.stdio;

void main() {
 double value_1;
 double value_2;
 double value_3;
 double value_4;
 double value_5;

 write("Value 1: ");
 readf(" %s", &value_1);
 write("Value 2: ");
 readf(" %s", &value_2);
 write("Value 3: ");
 readf(" %s", &value_3);
 write("Value 4: ");
 readf(" %s", &value_4);
 write("Value 5: ");
 readf(" %s", &value_5);

 writeln("Twice the values:");
 writeln(value_1 * 2);
 writeln(value_2 * 2);
 writeln(value_3 * 2);
 writeln(value_4 * 2);
 writeln(value_5 * 2);

 writeln("One fifth the values:");
 writeln(value_1 / 5);
 writeln(value_2 / 5);
 writeln(value_3 / 5);
 writeln(value_4 / 5);
 writeln(value_5 / 5);
}