(и просто присваивая непосредственно двойному), чтобы убедиться, что это происходит в

я проблема в системах на основе UNIX. Sprintf не округляет значение должным образом.

Например

double tmp = 88888888888885.875
char out[512];

Это 88,888,888,888,885,875, чтобы быть проще для глаз. Я привожу такой конкретный и большой пример, потому что кажется, что он отлично работает на меньших числах.

Я пытаюсь использовать это следующим образом

sprintf(out, "%021.2f", tmp);
printf("out = %s\n", tmp);

На окнах это приводит к:

out = 000088888888888885.88

Например, в AIX, но также и в Linux:

out = 000088888888888885.87

Почему это происходит? Любые идеи и как заставить его вести себя одинаково на Win / Unix

Спасибо

Ответы на вопрос(4)

Ваш ответ на вопрос