У меня проблема в системах на основе 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);
В Windows это приводит к:
out = 000088888888888885.88
Включено, например, в AIX, но в Linux также показано:
out = 000088888888888885.87
Почему это происходит?Любые идеи и как заставить его вести себя одинаково на Win / Unix
Спасибо