-4
我最近遇到這個代碼。它會產生奇怪的結果(大約在第18位後大量的隨機數字)。我試圖找到sprintf的限制信息,但找不到它。我試圖弄清楚答案是否正確或只是垃圾。當傳遞0.025(double類型),它打印出: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