Как сделать чтобы в haskell корректно выводились числа double?

Если я сделаю код show 8.0 оно выведет 8.0 а мне надо чтобы выводило 8 но если show 5.5 то выводило 5.5, Простите заранее что такая плохая формулировка, я не знаю как это сказать.


Ответы (1 шт):

Автор решения: extrn

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

{-# LANGUAGE ViewPatterns #-}

showDouble :: Double -> String
showDouble (properFraction -> (x, 0)) = show x
showDouble x = show x

Или если без расширений

showDouble :: Double -> String
showDouble x | (x', 0) <- properFraction x = show x'
showDouble x = show x
GHCi> showDouble 8.0
"8"
GHCi> showDouble 5.5
"5.5"
→ Ссылка