Spec-Zone.ru › Haskell 9

6.9.3. Шестнадцатеричные литералы с плавающей точкой

HexFloatLiterals
Since:

8.4.1

Status:

Включено в GHC2024, GHC2021

Разрешает запись литералов с плавающей точкой в шестнадцатеричном формате.

Шестнадцатеричная запись литералов с плавающей точкой полезна, когда требуется точно указать константы с плавающей точкой, так как обозначение литерала тесно связано с внутренним битовым кодированием числа.

В этом обозначении числа с плавающей точкой записываются с использованием шестнадцатеричных цифр, поэтому цифры интерпретируются по основанию 16, а не по обычному 10. Это означает, что цифры слева от десятичной точки соответствуют положительным степеням 16, а цифры справа — отрицательным.

Вы также можете записать явный показатель степени, который похож на показатель степени в десятичной записи со следующими отличиями:

  • показатель степени начинается с p вместо e
  • показатель степени записывается в основании 10 (не 16)
  • основание показателя степени равно 2 (не 16).

С точки зрения внутреннего битового кодирования каждая шестнадцатеричная цифра соответствует 4 битам, и вы можете представить себе показатель степени как «перемещение» числа с плавающей точкой влево (отрицательное) или вправо (положительное). Вот несколько примеров:

  • 0x0.1 эквивалентно 1/16
  • 0x0.01 эквивалентно 1/256
  • 0xF.FF эквивалентно 15 + 15/16 + 15/256
  • 0x0.1p4 эквивалентно 1
  • 0x0.1p-4 эквивалентно 1/256
  • 0x0.1p12 эквивалентно 256

© 2002–2007 The University Court of the University of Glasgow. All rights reserved.
Licensed under the Glasgow Haskell Compiler License.
https://downloads.haskell.org/~ghc/9.12.1/docs/users_guide/exts/hex_float_literals.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API