Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 19.03.2017, 02:50   #1
20mio14
Пользователь
 
Регистрация: 11.12.2014
Сообщений: 10
По умолчанию Вычисления с чисел с плавающей запятой

Есть в БД поле с числом (например 0,12).
Формат в БД: Одинарное с плавающей точкой, Основной, 2 цифры после запятой.

Нужно умножить его на другое число, введённое в делфи.
Почему выводится слишком много цифр после запятой?
Например на обычном калькуляторе 10*0,12=1,2. А в Делфи этот же пример равен 1,19999997317791.
Можно ли сделать так, что были "нормальные" числа, как в обычном калькуляторе?

Пробовала функцию FloatToStrF:
Код:
Edit9.Text:=FloatToStrF(StrToFloat(Edit7.Text)*ADOQuery1wPrice.AsFloat, ffNumber, 10, 2);
Выводит она вычисление в эдит корректно, однако при сохранении этого числа из эдита обратно в БД вызывает ошибку (скрин).
Код записи числа в БД:
Код:
ADOQuery2Amount.AsVariant:=Edit9.Text;
Если сделать так:
Код:
ADOQuery2Amount.AsVariant:=StrToFloat(Edit9.Text);
То ошибки нет, но записывается число с множеством знаков.

Пробовала так записывать число:
Код:
ADOQuery2Amount.AsString:=FloatToStrF(StrToFloat(Edit9.Text), ffNumber, 10, 2);
Но выдаёт ошибку. И при ffGeneral -- ошибка.
А при ffFixed записывает длинное число 1,19999997317791.
Изображения
Тип файла: png Снимок4.PNG (10.7 Кб, 71 просмотров)
20mio14 вне форума Ответить с цитированием
Старый 19.03.2017, 04:29   #2
newerow1989
Я самый любопытный
Участник клуба
 
Аватар для newerow1989
 
Регистрация: 24.07.2012
Сообщений: 1,949
По умолчанию

Код:
Format('%.2f',[1.19999997317791]);
или
Код:
Format('%.2f',[10*0.12]);
С запрограммированным приветом, Неверов Евгений!
Сайт: http://newerow1989.ru
[Паскаль] [Delphi]
newerow1989 вне форума Ответить с цитированием
Старый 19.03.2017, 17:13   #3
20mio14
Пользователь
 
Регистрация: 11.12.2014
Сообщений: 10
По умолчанию

А куда это прописать, чтобы в таблице корректно число отображалось?
Изображения
Тип файла: png Снимок.PNG (23.8 Кб, 71 просмотров)
20mio14 вне форума Ответить с цитированием
Старый 20.03.2017, 01:17   #4
northener
ПШП
Участник клуба
 
Регистрация: 15.07.2013
Сообщений: 1,869
По умолчанию

Цитата:
Сообщение от 20mio14 Посмотреть сообщение
Формат в БД: Одинарное с плавающей точкой, Основной, 2 цифры после запятой.
Нет такого формата в БД. И не может быть!
Ну разве что поле в БД имеет строковый тип.
northener вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запись и вывод чисел с плавающей запятой ramsesjol БД в Delphi 5 14.06.2013 07:03
Арифметика длинных чисел с плавающей запятой VAANsk Общие вопросы C/C++ 0 06.05.2013 22:08
Увеличение разрядности чисел с плавающей запятой Dmitry_B Общие вопросы C/C++ 5 02.08.2010 22:28
Программа перевода чисел с плавающей запятой Veselyn Помощь студентам 4 03.01.2010 19:49