Frac delphi что это
[Error] Unit10.pas(39): Incompatible types: ‘Frac’ and ‘Extended’. выдает эту ошибку
unit Unit10; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics.
trunc и frac в C++
С функцией trunc вроде разобралась, что в С++ она заменяется на floor.Правильно?? А frac на какую.
20)
щас еще раз отладчиком пройдусь
Добавлено через 5 минут
в frac(x) передается значения 20 но возвращает почему то не ноль а единицу
x := 0,33333333333333*60;
frac(x) попробуйте?
Добавлено через 1 минуту
видимо 0.3333333*60 будет 19.9 он его округляетдо 20 зачем то и из за этого весь бардак)
да вот так и должно но у меня при умножения 0.333333333333333*60 получается почему то 20 а не 19.999999999801 да и при frac(20) он должен выдавать 0 а он откуда та берет единицу
Добавлено через 30 секунд
щас посмотрю еще может в проекте где нибудь до этого что нибудь есть
Добавлено через 2 минуты
но если беру тип single вместо double то он выдает мне x=20 и и возвращает frac(x) равным 0 но если поменять на double то он дает x=20 но с frac(20) дает 1
Решение
x:=0.3333333333
получается если x*60=20 но если я вручную вбью то получается 0.333333333*60 =19.99999999801 то что нужно
а еще если я z :=x*60 то получится 20 но если shomessage вывожу то в showmessage получается 19.9999999801
Добавлено через 29 секунд
возможно ли какая то таблица сбивает?
Добавлено через 1 минуту
Значение из таблицы берет но в watch list получаю эти самые x:= 0.333333333 из таблицы дальше эту переменую умножаю на 60 то почему дает 20 но если showmessage выведу это то получаю 19.9999999801
Добавлено через 50 секунд
пожалуйста посмотрите что x имеет до вывода showmessage
Добавлено через 52 секунды
просто в showmessage тоже получаю это значение как у вас
Добавлено через 6 минут
в новом проекте все работает ничего не пойму с таблицы правильно все считываю получаю эти самые 0.33333333 но при умножения дает мне 20 почему то какая то не разбериха)) спасибо вам большое пойду копать
Вычисления в Delphi
Типы вычислений, выполняемых в Delphi для данных числового типа, можно разделить на несколько категорий, которые представлены ниже.
Операции присвоения в Delphi
Они используются для определения значения данных. В дополнение к непосредственному вводу значения в память, занятую переменной, используя ее адрес, стандартный метод присваивания заключается в использовании соответствующего оператора, как показано в примере:
Эту операцию следует интерпретировать как «Y становится значением для X» или «X принимает значение Y», в отличие от «X равно Y». Последняя интерпретация зарезервирована для оператора логического сравнения, выраженного тем же знаком равенства (без двоеточия, используемого в присваивании).
Логические операции: побитовые в Delphi
Они используются для обработки данных в виде набора битов. Каждый из битов рассматривается как независимая единица, и его изменение не влияет на другие биты данных.
Логические операции: сравнения в Delphi
Они используются для проверки, выполняется ли данное условие или нет. Это особый вид логических операций, поскольку они работают с данными, но возвращают логические значения. Допускаются следующие действия сравнения:
| Символ операции | Краткое описание | Пример |
| = | Равно | B:=(1=1); |
| Больше | B:=(1>-1); | |
| > = | Больше или Равно | B:=(1>=-1); |
Простые арифметические операции в Delphi
Они используются для манипулирования данными как определенным значением с использованием языковых операторов.
| Символ операции | Краткое описание | Пример |
| + | Прибавление | x:=1+2.3; |
| – | Вычитание | x:=1-3.3; |
| * | Умножение | x:=2*3.4; |
| Div | Целочисленное деление | x:=5 div 3; |
| Mod | Остаток от целочисленного деления | x:=18 mod 4; |
| / | Деление | x:=7 / 2; |
Арифметические функции в Delphi
Они используются для обработки данных как определенного значения с использованием функций, реализованных в библиотеках. Основные операции перечислены ниже:
| Функция | Краткое описание | Пример записи |
| Inc | Увеличение (увеличение на 1 или на N) | Inc(X); Inc(X,N); |
| Dec | Уменьшение (уменьшение на 1 или на N) | Dec(X); Dec(X,N); |
| Abs | Абсолютное значение | Abs(X); |
| Int | Целая часть действительного числа | Int(X); |
| Frac | Дробная часть действительного числа | Frac(X); |
| Sqr | Возвращает квадрат числа | Sqr(X); |
| Sqrt | Возвращает квадратный корень числа | Sqrt(X); |
| Power | Возводит в степень | Power(X, Y); |
| Ln | Натуральный логарифм | Ln(X); |
| LnXP1 | Натуральный логарифм для X + 1 | LnXP1(X); |
| Log2 | Двоичный логарифм | Log2(X); |
| Log10 | Десятичный логарифм | Log10(X); |
| LogN | Логарифм от X по основанию B | LogN(B, X); |
| Exp | Экспонента | Exp(X); |
| Ldexp | X*2P | Ldexp(X,P); |
| Hi | Старший байт | Hi(X); |
| Lo | Младший байт | Lo(X); |
| Sign | Знак. Значение зависит от знака аргумента (-1 для X 0) | Sign(X); |
| Round | Математическое округление | Round(X); |
| Trunc | Преобразование действительного числа в целое число. Возвращает целую часть. | Trunc(X); |
| Floor | Округление до наибольшего целого, меньшего или равного аргумента | Floor(X); |
| Ceil | Округление до наименьшего целого | Ceil(X); |
| Max | Из двух приведенных чисел возвращается большее | Max(X, Y); |
| Min | Из двух приведенных чисел возвращает меньшее | Min(X, Y); |
| MaxValue | Из массива чисел возвращает наибольшее | MaxValue (массив); |
| MinValue | Из массива чисел возвращает наименьшее | MinValue (массив); |
| MaxIntValue | Из массива целых чисел возвращает наибольшее | MaxIntValue (массив); |
| MinIntValue | Из числа целых чисел возвращает наименьшее | MinIntValue (массив); |
Сложные операции в Delphi
Они используются для вычисления выражений посредством множества действий, выполняемых со многими данными. Примеры ниже:



