Haskell 计算浮点时如何使用整数 totalPrice::Product->Integer->Float totalPrice product x=产品的案例 拉面 |x2*x |x 1.8*x |x 1.5*x |x 1.4*x |x>200->1.35*x |否则->0 炸薯条 |x3*x |x2.95*x |x2.7*x |x 2.5*x |x>20->2.35*x |否则->0
当我编译这段代码时,它出现错误“无法将预期的类型“Double”与实际的类型“Integer”匹配”Haskell 计算浮点时如何使用整数 totalPrice::Product->Integer->Float totalPrice product x=产品的案例 拉面 |x2*x |x 1.8*x |x 1.5*x |x 1.4*x |x>200->1.35*x |否则->0 炸薯条 |x3*x |x2.95*x |x2.7*x |x 2.5*x |x>20->2.35*x |否则->0,haskell,Haskell,当我编译这段代码时,它出现错误“无法将预期的类型“Double”与实际的类型“Integer”匹配” 有什么建议吗?x是一个整数,您将它与十进制值相乘,生成一个浮点值。像(*)这样的算术运算符的操作数和结果必须是相同的类型,并且必须在类型之间显式转换 totalPrice :: Product -> Integer -> Float totalPrice product x = case product of Ramen | x <= 10
有什么建议吗?
x
是一个整数
,您将它与十进制值相乘,生成一个浮点值。像(*)
这样的算术运算符的操作数和结果必须是相同的类型,并且必须在类型之间显式转换
totalPrice :: Product -> Integer -> Float
totalPrice product x = case product of
Ramen
| x <= 10 -> 2 * x
| x <= 30 -> 1.8 * x
| x <= 100 -> 1.5 * x
| x <= 200 -> 1.4 * x
| x > 200 -> 1.35 * x
| otherwise -> 0
Chips
| x <= 2 -> 3 * x
| x <= 5 -> 2.95 * x
| x <= 10 -> 2.7 * x
| x <= 20 -> 2.5 * x
| x > 20 -> 2.35 * x
| otherwise -> 0
totalPrice产品y=产品的案例
拉面
|x2*x
...
哪里
x=整数y
x
是一个整数
,您将其与十进制值相乘以产生一个浮点值。像(*)
这样的算术运算符的操作数和结果必须是相同的类型,并且必须在类型之间显式转换
totalPrice :: Product -> Integer -> Float
totalPrice product x = case product of
Ramen
| x <= 10 -> 2 * x
| x <= 30 -> 1.8 * x
| x <= 100 -> 1.5 * x
| x <= 200 -> 1.4 * x
| x > 200 -> 1.35 * x
| otherwise -> 0
Chips
| x <= 2 -> 3 * x
| x <= 5 -> 2.95 * x
| x <= 10 -> 2.7 * x
| x <= 20 -> 2.5 * x
| x > 20 -> 2.35 * x
| otherwise -> 0
totalPrice产品y=产品的案例
拉面
|x2*x
...
哪里
x=整数y
将代码粘贴为文本,并确保缩进代码。作为一项经验法则,帮助您决定在将来调试问题时应注意的事项:如果出现类型错误(“无法将预期类型…与实际类型…匹配”),通常意味着语法没有问题。在本例中,问题与防护装置或机箱无关,您只是使用了您的类型不支持的操作。如果您的guard或case语法有问题,Haskell将无法充分了解您试图执行的操作,甚至无法开始检查类型。请将代码粘贴为文本,并确保缩进代码。作为一项经验法则,帮助您确定在将来调试问题时应注意的事项:如果出现类型错误(“无法将预期类型…与实际类型匹配…”,这通常意味着您的语法没有问题。在本例中,问题与防护或案例无关,您只是使用了一个类型不支持的操作。如果您的防护或案例语法有问题,Haskell将无法充分了解您尝试执行的操作,甚至无法开始检查类型。Also、 使用浮动货币通常是危险的。我会说只使用整数个便士。同样,使用浮动货币通常是危险的。我会说只使用整数个便士。