如何设置GHCi以十进制形式输出计算结果?
在GHCi中禁用科学计数法,以十进制打印浮点数
确实,科学计数法偶尔会让人误以为计算结果出了问题,尤其是看到e的时候,总忍不住要反应一下实际数值是多少。下面几种方法可以帮你在GHCi里切换到十进制打印模式:
1. 临时转换单个浮点数
如果你只是想查看某个特定值的十进制形式,可以导入Numeric模块,用showGFloat函数来转换:
-- 先导入模块 import Numeric -- 转换并打印目标值 putStrLn $ showGFloat Nothing 2.1474027456e-2 ""
执行后会输出:0.021474027456,完全是十进制格式。
2. 全局设置GHCi默认打印格式
如果想让所有浮点数都默认用十进制打印,可以重新定义GHCi的print命令:
-- 导入必要模块 import Numeric -- 重新定义print命令,让它默认用十进制输出浮点数 :def print \expr -> return $ "putStrLn $ showGFloat Nothing (" ++ expr ++ ") \"\""
设置完成后,你直接输入浮点数表达式,比如2.1474027456e-2,GHCi就会自动输出十进制的0.021474027456,不用再手动转换。
3. 永久生效的配置
要是不想每次启动GHCi都重复上面的设置,可以把配置写入~/.ghci文件(Windows系统是%APPDATA%\ghc\ghci.conf):
:set -XOverloadedStrings import Numeric :def print \expr -> return $ "putStrLn $ showGFloat Nothing (" ++ expr ++ ") \"\""
下次启动GHCi时,这些设置会自动加载,直接就能用十进制打印浮点数了。
需要注意的是,这种设置只会影响浮点数的显示,整数和其他类型的输出不会受影响,完全不用担心干扰其他计算的查看。
内容的提问来源于stack exchange,提问作者Ηλεκτρολόγος Μηχανικός
相关产品推荐
相关产品推荐

