![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| yurgen20 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 3.4.2003 Репутация: нет Всего: нет |
Подозреваю что вопрос дубовый, но сам разобраться не смог. Прошу у мастеров помощи. Читаю из файла действительные числа во float-массив и потом вывожу его на StringGrid. При выводе появляются какие-то левые цифры в дробной части. например если в файле число 3,25 то при выводе будет что-то вроде 3,25099999765. Откуда берется бутор в дробной части числа и как с этим бороться? Такая же ерунда происходит если просто делаешь StrToFloat, а потом обратно FloatToStr. Прошу не смеятся над новичком, если вопрос окажеться совсем дубовым.
|
|||
|
||||
| _IGOR |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 86 Регистрация: 9.3.2003 Репутация: нет Всего: нет |
Надо писать не 3,25 а 3.25 Сколько писал подобного функций StrToFloat и FloatToStr не знаю. А вообще если надо преобразовать из строки в число или наоборот - вот код (работает под всеми Виндами) #include <stdlib.h> #include <stdio.h> int main(void) { float f; char *str = "3.25"; f = atof(str); printf("%f\n", f); return 0; //если надо наоборогт fcvt (преобразование числа типа double в строку) } |
|||
|
||||
| RAN |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 709 Регистрация: 14.3.2003 Где: Щёлково Моск.обл. Репутация: 5 Всего: 6 |
Вопрос, между прочим, совсем не дубовый. Действительно такое я тоже встречал, но точно не помню в какой ситуации. Наверно какие-то функции работают не корректно и после них результат надо округлять. И ещё, попробую избегать преобразований из float к double в операциях, может там что-то не так, хотя в принципе числа и в float, и в double храняться одинаково (с плавающей запятой), но я подозреваю, что если делить менее точное float на более точное double, то там возможны некорректные результаты.
|
|||
|
||||
| Alex101 |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 891 Регистрация: 8.4.2002 Где: Москва Репутация: нет Всего: 10 |
Используй wsprintf, если надо с какой-то заданной точностью.
Если файл текстовый, то читай числа как строки. -------------------- С уважением, А. Фролов. |
|||
|
||||
| Crait |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 244 Регистрация: 20.2.2003 Репутация: нет Всего: 1 |
Попробуй использовать не float, а double.
2 IGOR. А вот StrToFloat() считает, что следует писАть 3,25 , а не 3.25 . |
|||
|
||||
| Wowa |
|
|||
|
Эксперт Профиль Группа: Админ Сообщений: 15017 Регистрация: 14.9.2000 Где: Винград Репутация: нет Всего: 290 |
а DECIMAL можно?
|
|||
|
||||
| Gannibal |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 742 Регистрация: 15.4.2003 Где: 010101 Репутация: нет Всего: 17 |
а в каком смысле эсли децимал можно. эсли как число записывать то можно все если захотеть ..
-------------------- Я родился в этом безумном мире - и Я сделаю всё чтобы в нём выжить! |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |