Результаты с плавающей точкой - PullRequest
2 голосов
/ 25 августа 2011

В моем C-коде:

Я вижу, что некоторые результаты с плавающей запятой оказываются, например, 2.404567E+1.мне кажется, что для результатов менее 1 результаты оказываются в некотором экспоненциальном ряду.

Итак, у меня есть 2 вопроса:

  1. как мне получитьрезультат округляется до нескольких цифр, т. е. вместо 5.23542342734 я просто хочу, чтобы результат был 5.23

  2. Как можно избавиться от экспоненциальных результатов и получить результаты, как, например, 0.1648 вместо 1.6483517E-1

Ответы [ 2 ]

8 голосов
/ 25 августа 2011

Вы можете управлять выходным форматом printf() (я полагаю, вы говорите о printf()?) Несколькими способами. e.g.:

printf("%.2f\n", 5.23542342734);  // Prints "5.23"
printf("%.4f\n", 1.6483517E-1);   // Prints "0.1648"

См. Например http://www.cplusplus.com/reference/clibrary/cstdio/printf/ (или миллион других ссылок в Интернете) для более подробной информации о спецификаторах формата для printf().

3 голосов
/ 25 августа 2011

Настройка строки формата:

 printf ("%.2f", float_data);

http://linux.die.net/man/3/printf

Или для обрезки / аппроксимации значения до некоторых десятичных разрядов, я думаю, должно работать следующее:

trunc = floor (float_val * 10000) / 10000;

Приведенное выше сохраняет только до 4 десятичных разрядов float_var и сохраняет его до trunc.При необходимости используйте round ().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...