如何计算数值X的Float类型小数百分比?已掌握整数百分比计算
实现Haskell中Float类型的小数百分比计算
你现有的整数百分比计算逻辑可以直接扩展到Float类型,而且能去掉代码里冗余的硬编码分支(通用公式已经能覆盖所有情况)。
针对Float类型的专用实现
直接定义接收Float参数的函数,逻辑更直观:
pourcentageFloat :: Float -> Float -> Float pourcentageFloat x total = (x / total) * 100
- 第一个参数
x是你要计算百分比的Float数值,第二个参数total是整体总量 - 先计算
x占total的比例,再乘以100得到百分比结果
测试示例:
pourcentageFloat 20.0 100.0→ 返回20.0pourcentageFloat 15.5 50.0→ 返回31.0pourcentageFloat 7.2 80.0→ 返回9.0
兼容多类型的通用实现
如果需要同时支持整数、Float、Double等类型,可以用Haskell的类型类写一个多态版本:
pourcentage :: Fractional a => a -> a -> a pourcentage x total = (x / total) * 100
这个函数能接收任何属于Fractional类型类的参数,自动适配类型并返回对应类型的结果:
pourcentage 20 100 :: Float→ 返回20.0pourcentage 15.5 50 :: Double→ 返回31.0pourcentage 3 4 :: Float→ 返回75.0
关于你原有代码的小优化
你原来的整数代码里pourcentage 20 100 = 20这个分支是冗余的——用通用公式(fromIntegral 20 * fromIntegral 100)/100计算出来的结果就是20.0,完全可以删掉这个分支让代码更简洁。
内容的提问来源于stack exchange,提问作者Isvern
相关产品推荐
相关产品推荐

