微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Haskell中打印时将Float格式化为Int

这个 Haskell程序打印“1.0”如何让它打印“1”?
fact 0 = 1
fact x = x * fact (x-1)

place m n = (fact m) / (fact n) * (fact (m-n))

main = do   
   print (place 0 0)

解决方法

通过使用/ operation,您要求haskell使用小数数据类型.在这种情况下,您可能不希望这样.最好使用整数类型,如Int或Integer.所以我建议你做以下事情:
1.为事实函数添加一个类型声明,类似于fact :: Integer – >整数
2.使用quot代替/.

所以你的代码应该是这样的:

fact :: Integer -> Integer
fact 0 = 1
fact x = x * fact (x-1)

place :: Integer -> Integer -> Integer
place m n = (fact m) `quot` (fact n) * (fact (m-n))

main = do   
   print (place 0 0)

此外,正如@leftaroundabout所指出的,您可能希望使用更好的算法来计算这些二项式数.

原文地址:https://www.jb51.cc/css/214860.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。