表示されている動作は、Windows のprintf()
機能が Linux の機能とは異なる方法で実装されているという事実の結果ですprintf()
。ほとんどの場合、違いはprintf()
数値の丸めを実装する方法にあります。
printf()
どちらのシステムの内部でどのように機能するかは、実装の詳細です。printf()
したがって、システムは、浮動小数点値の表示方法について、そのようなきめ細かい制御を提供する可能性は低いです。
それらを同じに保つには、次の 2 つの方法があります。
表示中よりも計算中により多くの精度を使用します。たとえば、一部の関数電卓やグラフ電卓ではdouble
、すべての内部計算に精度が使用されますが、結果は精度のみで表示されますfloat
。
クロスプラットフォームprintf()
ライブラリを使用します。このようなライブラリは、通常、表示する桁を決定するために必要な計算がプラットフォームにとらわれないため、すべてのプラットフォームで同じ動作をする可能性があります。
しかし、これはあなたが思っているほど大きな問題ではありません。出力間の差は 0.000001 です。これは、2 つの値のいずれとも ~0.0000000004% の差です。表示エラーは本当にごくわずかです。
これを考慮してください:ロサンゼルスとニューヨークの間の距離は 2464 マイルで、これは表示出力の数値と同じ大きさです。0.000001 マイルの差は 1.61ミリメートルです。もちろん、そのような精度で都市間の距離を測定することはありません。:-)