![]() |
Округление чисел массива до сотых(C++ Builder)
Доброго времени суток.
Помогите решить вот эту задачу: Условие задания: Создать подпрограмму-процедуру, входом которой является массив из 7-ми действительных чисел, а выходом - массив этих чисел, округленных до сотых. Я пытался сделать через Memo1 в которое мы вводим цифры, а выводим в Memo2 с (FormatFloat("0,00",k)); При компилирование он мне вывел совсем другие числа(видимо индексы). P.S. Вводим в StringGrid1 Выводить нужно в StringGrid2 Заранее благодарен за помощь. |
Цитата:
|
KnightMrak, задание сформулировано не совсем полно. Каков может быть диапазон исходных вещественных чисел?
Сейчас поясню, почему это имеет значение. 1-ый случай: умножаем исходное число на 100.0 (вещественное, чтобы избежать лишнего преобразования типов, хотя умный компилятор сделает это сам). Преобразуем число в целое отсечением дробной части (можем предварительно прибавить 0.005, чтобы округление производилось в сторону с минимальной погрешностью. Или вычесть, если число отрицательное). Делим полученное целое на 100.0 вещественное - дело сделано. Но таким образом можно округлять только небольшие числа. Не выходящие (после умножения на 100) за пределы представления целого числа заданной разрядности с учетом наличия или отсутствия знака. 2-ой случай: если Вы не хотите накладывать ограничения на величину исходного вещественного числа, его необходимо предварительно разделить на целую и дробную части. К примеру, функцией modf. Целая часть остается неизменной, дробная округляется до сотых описанным выше способом. Потом целая и дробная части складываются. Главное, чтобы такая функция возвращала целую часть исходного числа как указатель на вещественную переменную. Если указатель будет на целое, большого выигрыша от её использования Вы не получите. |
Время: 11:48. |
Время: 11:48.
© OSzone.net 2001-