Что такое первая версия Delphi, которая позволяет приведениям типа double (10)

Delphi Tokyo 64-bit вычислит некоторые математические функции, используя единую точность, если вызывается с целыми константами, например

{$apptype console}
uses
  system.math;
var
  d: double;
begin
  d := 10;
  writeln(log2(10):20:16, log2(10.0):20:16,log2(d):20:16);
end.

будет печатать 3.3219280242919923 3.3219280948873626 3.3219280948873626.

Мне сказали, что в Дельфи Токио 64-битные флеши денормальные числа равны нулю? , что я должен использовать typecast, double(10)чтобы обойти эту функцию. Проблема в том, что из доступных мне версий Delphi только Токио допускает этот тип (IMO, хотя документация, по- видимому, запрещает его, заявив, что только вариант разрешен для использования в реальном типе).

Я знаю , что xe4 (VER250) дает ошибку Error: E2089 Invalid typecastдля double(10), но у меня нет никакой информации о VER260 .. VER310.

Итак, какова первая версия Delphi, которая допускает тип double(10)?

delphi,casting,

3

Ответов: 1


5 принят

XE7 терпит неудачу. XE8 терпит неудачу. ... Сбой в Delphi 10.1 Берлин.

Так что, похоже, это было представлено в 10,2 Токио.


В предыдущих версиях (XE4) вы можете использовать целые вспомогательные методы в SysUtils :

10.ToDouble 

В версиях до этого используйте варианты конверсий:

VarAsType(10,varDouble)

Функция, которая будет работать во всех версиях:

function DoubleVal( x : Double) : Double; inline;
begin
  Result := x;
end; 
Дельфы, литье,
Похожие вопросы