Форум программистов, компьютерный форум CyberForum.ru

Форматирование чисел с плавающей точкой - C++

Восстановить пароль Регистрация
 
i8086
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 9
18.07.2013, 13:18     Форматирование чисел с плавающей точкой #1
Все знают про проблемы с представлением дробных чисел.
Например:
C++
1
2
3
4
    
    double test = .58;
    printf("%f\n", test);    // 0.580000
    printf("%.20f\n", test); // 0.57999999999999996003
Число .58 представлено как .57999... но выводиться как .58.
Как реализовать такое форматирование?
По каким правилам и до скольких знаков округлять?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.07.2013, 13:18     Форматирование чисел с плавающей точкой
Посмотрите здесь:

C++ Определите одномерный массив из 10 чисел с плавающей точкой
Написать защиту от ввода чисел с плавающей точкой, отрицательных чисел и символов C++
Создать двумерный массив чисел с плавающей точкой и вывести на экран все числа по диагонали с лева на право C++
Калькулятор чисел с плавающей точкой C++
C++ Сравнение чисел с плавающей точкой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11804 / 6783 / 767
Регистрация: 27.09.2012
Сообщений: 16,838
Записей в блоге: 2
Завершенные тесты: 1
18.07.2013, 13:26     Форматирование чисел с плавающей точкой #2
А такой вариант:
C++
1
printf("%.1f\n", test);
???

Добавлено через 1 минуту
Цитата Сообщение от i8086 Посмотреть сообщение
По каким правилам и до скольких знаков округлять?
Округление происходит во время вывода.
i8086
0 / 0 / 0
Регистрация: 10.01.2013
Сообщений: 9
18.07.2013, 13:39  [ТС]     Форматирование чисел с плавающей точкой #3
C++
1
printf("%.1f\n", test);
Выводит 0.6

А можно где-нибудь посмотреть по каким правилам происходит округление в printf?
Helo
4 / 4 / 0
Регистрация: 04.07.2013
Сообщений: 52
18.07.2013, 13:39     Форматирование чисел с плавающей точкой #4
А что вам нужно вывести?
попробуйте так
C++
1
printf("%-5.5g\n", test);    // 0.58
Croessmah
Модератор
Эксперт С++
 Аватар для Croessmah
11804 / 6783 / 767
Регистрация: 27.09.2012
Сообщений: 16,838
Записей в блоге: 2
Завершенные тесты: 1
18.07.2013, 13:40     Форматирование чисел с плавающей точкой #5
delete
Yandex
Объявления
18.07.2013, 13:40     Форматирование чисел с плавающей точкой
Ответ Создать тему
Опции темы

Текущее время: 16:49. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru