Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / C++ [игнор отключен] [закрыт для гостей] / float ggg=StrToFloat("29,10"); ->дает ggg=29,00000318 / 7 сообщений из 7, страница 1 из 1
28.06.2004, 17:46
    #32579871
sfsf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float ggg=StrToFloat("29,10"); ->дает ggg=29,00000318
float ggg=StrToFloat("29,10"); ->дает ggg=29,10000318

Как с этим бороться, ведь должно получиться 29,100000000
...
Рейтинг: 0 / 0
28.06.2004, 23:11
    #32580120
gamych
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float ggg=StrToFloat("29,10"); ->дает ggg=29,00000318
sfsffloat ggg=StrToFloat("29,10"); ->дает ggg=29,10000318

Как с этим бороться, ведь должно получиться 29,100000000
Бороться придётся с дискретной областью значений типа данных. Это, сам понимаешь, затея бессмысленная. Смирись. Ну, в крайнем случае, попробуй double - там разрядность мантиссы больше.
...
Рейтинг: 0 / 0
29.06.2004, 11:32
    #32580619
viper
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float ggg=StrToFloat("29,10"); ->дает ggg=29,00000318
Ну еще можеш попробывать округлять...
_________________________________________________
Легче написать не правильную программу чем понять правильную (С) Alan Perlis
...
Рейтинг: 0 / 0
29.06.2004, 15:37
    #32581497
sfsf
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float ggg=StrToFloat("29,10"); ->дает ggg=29,00000318
Есть функция RoundTo()
Но она не работает ????


Как float округлить, например до 4 знаков после запятой
...
Рейтинг: 0 / 0
30.06.2004, 10:10
    #32582517
CEMb
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float ggg=StrToFloat("29,10"); ->дает ggg=29,00000318
С той же проблемой бьёмся.

Копался во float ничё не понял...

Округлять лучше в строке... Правда потом всё-равно во флоат переностить...
...
Рейтинг: 0 / 0
30.06.2004, 11:20
    #32582755
Ярослав Татаренко
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float ggg=StrToFloat("29,10"); ->дает ggg=29,00000318
sfsffloat ggg=StrToFloat("29,10"); ->дает ggg=29,10000318

Как с этим бороться, ведь должно получиться 29,100000000

А что собственно Вам не нравится? 0,00000318 укладывается в требования к точности по IEEE. Пытаться как-либо округлить у вас не получится, т.к. при любой операции над числами с плавающей точкой производится нормализация операндов . Именно эта операция и дает погрешности.
...
Рейтинг: 0 / 0
30.06.2004, 11:29
    #32582784
roman10
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
float ggg=StrToFloat("29,10"); ->дает ggg=29,00000318
авторКак float округлить, например до 4 знаков после запятой

Умножить на 10000, преобразовать к целому типу, разделить на 10000.0f ?
...
Рейтинг: 0 / 0
Форумы / C++ [игнор отключен] [закрыт для гостей] / float ggg=StrToFloat("29,10"); ->дает ggg=29,00000318 / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]