Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Ansi ro float. Вылезает погреншность


Автор: karpov 10.8.2014, 14:14
Добрый день.
Работаю с таблицей excel
Считал некое значение
Код

AnsiString
ad55=app.OlePropertyGet("Cells").OlePropertyGet("Item",l,34);

Значение в ячейке равно "22417,56000000" (нули вывел специально дабы показать что после знака 6 ничего нет)
Если вывожу так же в Ansistring в другую ячейку значение остается "22417,56000000" 

Затем для вычислений перевожуего во float
Код

float Znachenie= StrToFloat(ad55);

или так
Код

float Znachenie = float_as_ad55.ToDouble();

 Проблема в том что значение новое значение float Znachenie принимает вид "22417,560546875", то бишь прнирастает каким-то хвостиком. Причем если я так преобразщую несколько значений( через цикл), у каждого значения хвостик свой.

Вопрос в том как от него избавиться?

Пробовал предварительно убирать нули ad55=ad55.Trim(); Не помогает.

Автор: Фантом 10.8.2014, 15:30
Никак.

А вообще полезно почитать что-нибудь про представление чисел с плавающей точкой, точность соответствующих типов и т.п. - это все-таки азы программирования.

Автор: xvr 11.8.2014, 12:18
Вместо float поставьте double. Будет не такой жуткий хвост  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)