-4
私はこのコードを最近見つけました。それは奇妙な結果を生み出します(約18桁目の数字の後にランダムな数字がたくさんあります)。私はsprintfの限界についての情報を見つけようとしましたが、見つけられませんでした。私は答えが実際に正しいかどうか、あるいはゴミだけであるかどうかを判断しようとしています。 (doubleとして)0.025を通過したときには、プリントアウトし:sprintf精度の制限
0.025000000000000001387778780781445675529539585113525390625
#define MAX_NUM_STR_LEN 128
void File_WriteNumber(File *fp, double value) {
char numbuf[MAX_NUM_STR_LEN];
int sz = sprintf(numbuf, "%.100g", value);
fwrite (numbuf , sizeof(char), sz, fp);
}
https://stackoverflow.com/questions/588004/is-floating-point-math-broken – yano
あなたは '0.25'または' 0.025'を渡していますか? –
@MichaelAlbers oops。修正されました。 – Jiminion