Указатель NULL
- это тот, который указывает на никуда. Когда вы разыскиваете указатель p
, вы говорите «дайте мне данные в месте, хранящемся в« p ». Когда p
является нулевым указателем, местоположение, хранящееся в p
, является nowhere
, вы говорите «Дайте мне данные в месте« нигде ». Очевидно, он не может этого сделать, поэтому он выбрасывает NULL pointer exception
.
В общем, это потому, что что-то не было правильно инициализировано.
В зависимости от того, что именно вы ищете:
Float
и Double
- в значительной степени то, что вы знаете и «любите» из Float и Doubles на всех других языках. Rational
, который является Ratio
из Integer
с FixedPoint
- Этот пакет предоставляет значения фиксированной точки произвольного размера. Например, если вам нужно число, представленное 64 целыми битами и 64 дробными битами, вы можете использовать FixedPoint6464
. Если вы хотите, чтобы число составляло 1024 целых и 8 дробных битов, используйте $(mkFixedPoint 1024 8)
для генерации типа FixedPoint1024_8
. numbers
, упомянутом выше - очень круто. Если вам нужны высокоточные / быстрые вычисления / вычисления с плавающей запятой, вам может потребоваться использовать FFI и long double, поскольку собственный тип Haskell еще не реализован (см. https://ghc.haskell.org/ ПРОФ / GHC / билет / 3353 ).