Здравствуйте, fml1, Вы писали:
F>Здравствуйте, xsidxsid, Вы писали:
X>>Подскажите пожалуйста, какие типы переменных использовать, если мне необходимо перемножать числа следующего порядка
X>> 78242976*554= 43346608704;
F>Это не подойдет? F>Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6 F>Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4 F>Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8 F>Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10 F>Comp -2^63+1 .. 2^63 -1 19-20 8 F>Currency -922337203685477.5808.. 922337203685477.5807 19-20 8
Можно еще так попробовать:
var
i1:, i2, Res: Int64;
begin
i1 := 78242976;
i2 := 554;
Res := i1 * i2;
end;
Здравствуйте, xsidxsid, Вы писали:
X>Подскажите пожалуйста, какие типы переменных использовать, если мне необходимо перемножать числа следующего порядка
X> 78242976*554= 43346608704;
Это не подойдет?
Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6
Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4
Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8
Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10
Comp -2^63+1 .. 2^63 -1 19-20 8
Currency -922337203685477.5808.. 922337203685477.5807 19-20 8
Здравствуйте, xsidxsid, Вы писали:
X>Подскажите пожалуйста, какие типы переменных использовать, если мне необходимо перемножать числа следующего порядка
X> 78242976*554= 43346608704;
X>при использовании типа int64 происходит переполнение и результат равен 396935744, что неверно.
X>Как быть?
2^64 / 2 — 1 = 9223372036854775807
Должно влезать.
Здравствуйте, fml1, Вы писали:
F>Здравствуйте, xsidxsid, Вы писали:
X>>Подскажите пожалуйста, какие типы переменных использовать, если мне необходимо перемножать числа следующего порядка
X>> 78242976*554= 43346608704;
F>Это не подойдет? F>Real48 2.9 x 10^-39 .. 1.7 x 10^38 11-12 6 F>Single 1.5 x 10^-45 .. 3.4 x 10^38 7-8 4 F>Double 5.0 x 10^-324 .. 1.7 x 10^308 15-16 8 F>Extended 3.6 x 10^-4951 .. 1.1 x 10^4932 19-20 10 F>Comp -2^63+1 .. 2^63 -1 19-20 8 F>Currency -922337203685477.5808.. 922337203685477.5807 19-20 8
Да, я смотрел эти типы. Ошибка возникала в умножении. Там переменные должны быть одного (большого) типа.
Вот так это будет правильно.
var
i1:, i2, Res: Int64; //можно и Real48 и Single и Double и ...begin
i1 := 78242976;
i2 := 554;
Res := i1 * i2; // здесь переменные должны быть одного типаend;
А так не правильно, так было у меня.
var
i1, i2: ULONG;
Res: Int64;
begin
i1 := 78242976;
i2 := 554;
Res := i1 * i2; // здесь фигня выводилась. Перемножение шло в типе ULONG, а потом результат после
// переполнения приводился к типу Int64end;
Здравствуйте, Shurik Ilyin, Вы писали:
SI>Здравствуйте, xsidxsid, Вы писали:
X>>Подскажите пожалуйста, какие типы переменных использовать, если мне необходимо перемножать числа следующего порядка
X>> 78242976*554= 43346608704;
X>>при использовании типа int64 происходит переполнение и результат равен 396935744, что неверно.
X>>Как быть?
SI>2^64 / 2 — 1 = 9223372036854775807 SI>Должно влезать.
Спасибо за ответ. Уже разобрался что за фигня была. Выше отписался.
Здравствуйте, Mckey, Вы писали:
M>Здравствуйте, xsidxsid, Вы писали:
>>>поскипано.....
M>По моему где-то это даже в хелпе написано...
может быть... я не нашел этого...