(и просто присваивая непосредственно двойному), чтобы убедиться, что это происходит в
я проблема в системах на основе 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
Спасибо