【发布时间】:2021-09-12 07:49:46
【问题描述】:
在 JS 中,我们有 Number.toExponential(),它将数字转换为其科学记数法(即:1000 -> "1e3")。
我查看了 hoggle,但似乎找不到。
注意:指数变化num -> string
【问题讨论】:
标签: haskell math exponential
在 JS 中,我们有 Number.toExponential(),它将数字转换为其科学记数法(即:1000 -> "1e3")。
我查看了 hoggle,但似乎找不到。
注意:指数变化num -> string
【问题讨论】:
标签: haskell math exponential
您可以使用printf :: PrintfType r => String -> r 并使用%e 或%E 说明符:
Prelude> import Text.Printf
Prelude Text.Printf> printf "%e" 14.25 :: String
"1.425e1"
Prelude Text.Printf> printf "%E" 14.25 :: String
"1.425E1"
这里%e 用小写e 指定科学计数法,%E 用大写E 指定。 printf 的输出类型可以是String 或IO ()。如果使用 String 类型,我们会得到带有格式化类型的 String,对于 IO (),它会将类型打印到标准输出。
@Noughtmare also mentioned showEFloat :: RealFloat a => Maybe Int -> a -> String -> String 在字符串前面加上 RealFloat 数字类型的指数表示。
您也可以使用Scientific 号码,然后使用formatScientific :: FPFormat -> Maybe Int -> Scientific -> String。
如果您因此安装scientific package,我们可以通过以下方式实现:
Prelude> import Data.Scientific
Prelude Data.Scientific> formatScientific Exponent Nothing 1000
"1.0e3"
这意味着1000 类型应该是Scientific 而不是`
【讨论】:
Numeric.showEFloat也不错(我个人不太喜欢printf的魔力)。