143 / 122 / 21
Регистрация: 13.11.2012
Сообщений: 1,564
|
||||||||||||||||
1 | ||||||||||||||||
Проблемы с округлением вещественных чисел26.06.2013, 06:36. Показов 4159. Ответов 1
Метки нет (Все метки)
В общем то сабж. Уже треть гугла перерыл, но вразумительного решения так и не нашёл.
Visual C++ (2005) Нашёл по округлению 2 функции : floor и ceil. Они обе не работают или работают не правильно. Есть множество чисел типа Float, честно говоря если был бы вариант с типом 2 точек после запятой - я был бы рад, но такого нет, потому использую float. Нужно оставить только 2 числа после запятой, при этом округлив по правилам математики их. Если я использую стандартную функцию floor, например:
Напрашиваются несколько вопросов: 1. Возможно есть какие то другие способы округления? 2. Возможно стоит писать функцию самому, которая будет брать вещественное число исходя из кол-ва его символов, и посимвольно удалять их, предварительно округляя?(кстати, как узнать кол-во символов вещественного числа?) 3. Ф-я round не поддерживается 2005\2009 студиями, стоит ли их переписать самому? - если они дадут правильный результат... 4. В итоге я эти float числа должен вывести по отдельности, суммировать и вывести в эксель общее, я понял что sprintf с "%.3f" дадут мне нужный вывод, однако оно не округляет число, и общий результат останется не округлённым, а исходя из кол-ва чисел, у меня их больше 500 - будет потеря в сотни\тысячи, что не очень хорошо... 5. Можно ли создать свой тип данных с 2 точками после запятой? =) 6. Возможно есть темы в которых уже данный вопрос решался, а я его пропустил из виду, и вы случайно имеете ссылку на обсуждение данного вопроса =) За ранее, спасибо за помощь) Добавлено через 11 часов 25 минут Не уж то это действительно такой тяжёлый вопрос, что мне придётся писать собственную функцию разбора и округления через преобразование в char, а потом сравнение каждого эл-а до strlen(ebuf), а потом опять в флоат?... Ппц очень накладно получится =( Добавлено через 3 часа 49 минут Так, я решил протестировать ф-ю floor не в моём проэкте, а в обычном преложении... Результат меня удивил:
В моей программе даже этого не происходит.
Добавлено через 5 минут Такое ощущение, что выводится результат типа abs(), может оно так и есть?... Только вот что именно его делает таким? - функция sprintf или сам эксель?
0
|
26.06.2013, 06:36 | |
Ответы с готовыми решениями:
1
проблемы с округлением в PHP Проблема с округлением чисел Найти суммы двух случайных чисел. a) целых чисел из диапазона от 50 до 100 b) вещественных чисел от 3х с половиной до 8 Дан файл вещественных чисел. Подсчитать среднее значение чисел большее 3 |
Антикодер
1804 / 869 / 48
Регистрация: 15.09.2012
Сообщений: 3,081
|
|
26.06.2013, 12:48 | 2 |
ссылки по этой теме
Смысл обьединений Число double 0.1 на самом деле не 0.1 От перемены мест слагаемых сумма меняется Добавлено через 15 минут ну или умножить double на 100 потом Функция округления double и разделить на 100 Добавлено через 3 минуты ещё вот Округление double
1
|
26.06.2013, 12:48 | |
26.06.2013, 12:48 | |
Помогаю со студенческими работами здесь
2
Дан массив вещественных случайных чисел. Подсчитать сумму положительных чисел В файле из 10 вещественных чисел сделать первые пять чисел последними и наоборот Массив вещественных чисел. Выбрать среди положительных чисел наименьшее значение Программа определения максимального по модулю чисел из массива вещественных чисел Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |