![]() |
Проблемы с real
Маленький пример:
var x:real; begin x:=(4-6)/5; DrawText (''+x, 5, 5); repaint; Delay(5000); end. Эмулятор выдает следующий результат: 0.0000 По калькулятору (да и в уме) ответ получается -0.4. С этим сталкиваюсь уже не первый раз. Кто знает, объясните, почему так, и как с этим бороться. Поиском нужного ответа не нашел. Если такая тема уже есть на форуме, скиньте ссылку. Буду очень благодарен. |
Ответ: Проблемы с real
Попробуй использовать Lib_dbl
|
Ответ: Проблемы с real
Не совсем понимаю, как либа мне поможет с делением.
|
Ответ: Проблемы с real
Я сам ей не пользовался, но она работает с типом double, поэтому ошибок в вычислениях быть не должно. Хотя непонятно, почему real выдает такую ошибку.
|
Ответ: Проблемы с real
Я не нахожу в этой либе именно деления дробных чисел.
|
Ответ: Проблемы с real
Нужно использовать функцию div.
|
Ответ: Проблемы с real
Я нуб. Не понимаю как правильно использовать либу.
dbl.div (4-6, 5) ?? |
Ответ: Проблемы с real
Цитата:
|
Ответ: Проблемы с real
fixed, во floating вообще ничего не выдает, версия английская 2.02
|
Ответ: Проблемы с real
При вычислениях лучше указывать дробную часть, даже если она нулевая.
Тогда телефон воспримет эти числа как вещественные и вычисления будут верные, а в данном случае телефон думает, что используются целые числа типа Integer, считает по принципам счета с целыми числами и результат потом приводит к вещественному числу. Для того, чтобы ваш пример нормально работал нужно только немного исправить его: PHP код:
|
Ответ: Проблемы с real
А как быть с переменными типа integer?
Пример: x:real; a, b, c:integer; begin a:=4; b:=6; c:=5; x:=(a-b)/c; end. |
Ответ: Проблемы с real
А ты их умножай на real константу со значением 1.0.
Типа так: PHP код:
|
Ответ: Проблемы с real
Я сделал так:
x, y :real a, b, c:integer; begin a:=4; b:=6; c:=5; y:=c; x:=(a-b)/y; end. Т.е. сначала перевел делитель в real и потом выполнил вычисления. Вроде, работает. |
Часовой пояс GMT +4, время: 20:02. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot