誰かが私に何が起こっているのか説明できますか?
double dbl = stdtod("9999999999999999", NULL);
私は値を取得しました:9999999999999998
ではなく:9999999999999999
なぜこれが起こるのか理解できません.MSDNでは、最大倍数が であると指定されている1.7976931348623158E+308
ため、オーバーフローになることはありません。
ありがとう
誰かが私に何が起こっているのか説明できますか?
double dbl = stdtod("9999999999999999", NULL);
私は値を取得しました:9999999999999998
ではなく:9999999999999999
なぜこれが起こるのか理解できません.MSDNでは、最大倍数が であると指定されている1.7976931348623158E+308
ため、オーバーフローになることはありません。
ありがとう
オーバーフローではなく、浮動小数点の動作に関する問題です。オーバーフローが発生するずっと前に、有効桁数が制限されています。これは何度もリンクされていますが、これをチェックしてください