次の式があるとします。
byte A = 69;
int B = 123;
long C = 3210;
float D = 4.9f;
double E = 11.11;
double X = (B * 100) + 338.1 - (E / B) / C;
double X1 = (B * 100) + (A * D) - (E / B) / C;
// JAVA - lost precision
System.out.println(X); // 12638.099971861307
System.out.println(X1); // 12638.099581236307
// C# - almost the same
Console.WriteLine(X); // 12638.0999718613
Console.WriteLine(X1) // 12638.0999784417
Java は X から精度を失うことに気付きました。338.1 は暗黙の double ですが、C# はほとんどそうではありません。338.1 は float と double で等しいため、その理由がわかりません。ドットの後の数字は 1 つだけです。