私は非常に珍しい問題を抱えています。それはおそらく初心者のCラーナーからの悪いコードです。私は次のコードで苦労しています。
#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv) {
float a = 1587128832.000000;
int d = 1587128898.000000;
float f = a + d ;
printf("%f\n", f);
return 0;
}
次のコードは、3174257664.000000
グーグルが結果が3174257730になるはずだと言っている間に出力します。
float
/double
をanで追加しようとしint
ていますが、奇妙な結果が得られます。
それで、私は一体何を間違っているのですか?
Cはint
sをfloat
sに変換する必要があるため、エラーは実際には混合データ型の問題ではないと思います。
floatは、そのような数値を正確に保持することはできません。
つまり。https://www.h-schmidt.net/FloatConverter/IEEE754.html
正確な結果が必要な場合は、より多くのメモリが必要です->を使用しますdouble
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加