C++Builder
Начало
Форум
Помощь
Войти
Регистрация
C++Builder
>
Forum
>
Вопросы программирования
>
Общие вопросы программирования в C++Builder
>
Преобразование типов данных
Страниц: [
1
]
Вниз
Печать
Автор
Тема: Преобразование типов данных (Прочитано 2415 раз)
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Преобразование типов данных
«
:
29 Апрель 2014, 12:34:01 »
Привожу пример кода:
double fsend = StrToFloatDef("3573,56902",0);
double d = fsend/0,014541;
int i = static_cast
(d);
Label1->Caption = IntToStr(i);
Результат не соответствует числу 32767 (Выводит 32766)
Помогите плиз разобраться куда делась единичка?
Записан
Tantos
А ты воспользовался поиском перед тем, как спросить?!
Давний друг
Сказали спасибо: +350/-28
Offline
Сообщений: 2181
Re: Преобразование типов данных
«
Ответ #1 :
29 Апрель 2014, 15:35:25 »
Здесь столько приведений типов, что не вижу смысла что-то объяснять... Но всё же намекну: как ты думаешь, каким образом вещественный тип будет приведен к целочисленному?
Записан
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Re: Преобразование типов данных
«
Ответ #2 :
15 Май 2014, 12:21:22 »
Из-за представления вещественного числа с использованием мантиссы даже не представляю.
Записан
Tantos
А ты воспользовался поиском перед тем, как спросить?!
Давний друг
Сказали спасибо: +350/-28
Offline
Сообщений: 2181
Re: Преобразование типов данных
«
Ответ #3 :
15 Май 2014, 13:27:58 »
Подсказка: по какому принципу работает округление вверх?
Кстати, зачем нужно такой код городить?
Записан
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Re: Преобразование типов данных
«
Ответ #4 :
15 Май 2014, 16:35:50 »
Пишу имитаторы устройств. Обмен между ними осуществляется 32-х разрядными словами типа ULONG. А весь этот огород нужен для передачи каких либо значений по разрядной сетке. К примеру цена млад разряда 0.02 а нужно пользователю передать число например 2.8 Надо определить его двоичное представление. Пользователь вводит в Edit 2.8 Прога его читает (StrToFloat) и делит на 0.02 получается целое число которое нужно потом засунуть в 32х разрядное слово и передать через спец плату а тут эти преобразования будь они не ладны что только не пробовал ппц просто
Записан
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Re: Преобразование типов данных
«
Ответ #5 :
15 Май 2014, 16:43:50 »
Читал книги , форумы. Но везде объясняется только почему float f = 0,5 будет меньше double d = 0,5 хотя мол и там 0.5 и там 0.5. Ответ из-за разрядности и представления этого самого дробного числа в памяти машины. А вот про преобразование молчок
Записан
Tantos
А ты воспользовался поиском перед тем, как спросить?!
Давний друг
Сказали спасибо: +350/-28
Offline
Сообщений: 2181
Re: Преобразование типов данных
«
Ответ #6 :
16 Май 2014, 03:48:33 »
float - искусственный тип данных, в отличии от double.
Записан
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Re: Преобразование типов данных
«
Ответ #7 :
16 Май 2014, 10:51:52 »
Согласен))) А непосредственно с моим вопросом не поможите
Записан
S0mbre
Глобальный модератор
Сказали спасибо: +1113/-22
Offline
Сообщений: 2132
S0mbre
Re: Преобразование типов данных
«
Ответ #8 :
16 Май 2014, 11:18:25 »
Что ты ожидаешь-то? Приведение к целочисленному типу просто "обрезает" дробную часть. Если надо округлить, используй всяческие RoundTo, Ceil, Floor и т.д. - см. модуль Math.
И кстати, почему у меня на калькуляторе 3573,56902 / 0,014541 = 245758,132 Ты нигде не напутал?
Записан
Sergey1985
Участник
Сказали спасибо: +8/-1
Offline
Сообщений: 310
Re: Преобразование типов данных
«
Ответ #9 :
18 Июль 2014, 11:16:13 »
Никак нет!!!
Записан
Страниц: [
1
]
Вверх
Печать
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Вопросы программирования
-----------------------------
=> Общие вопросы программирования в C++Builder
=> Программирование с FMX
=> Работа с базами данных в C++Builder
=> Windows API
=> Технологии COM/DCOM, ActiveX
=> Аспекты и идеология профессиональной разработки ПО
=> Компьютерное железо и системное администрирование
=> студенческий городок
-----------------------------
Обсуждение материалов на сайте
-----------------------------
=> Обсуждений статей на сайте
=> Обсуждение материалов из файлового архива
=> Компоненты сторонних разработчиков к С++Builder
-----------------------------
Работа сайта и новости
-----------------------------
=> Ищу/предлагаю работу
=> Новости из мира программирования
=> Новости - события календаря
=> Голосования
=> Компьютерный юмор и приколы
=> Работа сайта
=> Флейм
-----------------------------
FAQ - частозадаваемые вопросы/ответы
-----------------------------
=> FAQ, общие вопросы, посвящённые C++Builder
=> FAQ, вопросы по базам данных
=> FAQ, вопросы по компонентам
Загружается...