(およびその他)を使用System.SysUtils.TShortIntHelper
すると、次のように記述できます。
output := 5.ToString();
5
のように数値をフォーマットしますstring
。同様に、ありますがSystem.SysUtls.TExtendedHelper
、コンパイルできません:
output := (5.0).ToString();
E2018: レコード、オブジェクト、またはクラスの型が必要です
動作しない他のバージョン:
5.0.ToString()
(1.0+5.1).toString()
(5+0.).toString()
(E2029: ')' が必要ですが、']' が見つかりました)
実際に動作するバージョン:
(1+5.1).toString()
(1.1+1+5.1).toString()
5.9e0.toString()
拡張値が宣言されている場合、次のconst
いずれも機能しません。
function TestFormat(): String;
const
q = 5.5;
begin
Result := q.ToString();
end;
しかし、それの定義がq : extended = 5.5;
あればうまくいきます。では、なぜコンパイラがこのように動作するのか疑問に思っています。