Elixir 十进制和整数相乘会抛出“算术表达式中的错误参数”
在我的项目中,我必须通过将十进制价格乘以整数数量来计算产品的总价格。当我这么做的时候,我在算术表达式中得到了一个异常错误的参数。如何解决这个问题?如果必须对结果进行四舍五入,我不想丢失数据。Elixir不允许运算符重载,因此decimal包无法使*运算符在decimal上工作。该软件包确实提供了一个函数Decimal.mult/2来乘以十进制值,该函数接受2个十进制值,您可以使用它们。您需要首先使用Decimal.new/1将整数转换为十进制,然后使用Decimal.mult/2:Elixir 十进制和整数相乘会抛出“算术表达式中的错误参数”,elixir,ecto,Elixir,Ecto,在我的项目中,我必须通过将十进制价格乘以整数数量来计算产品的总价格。当我这么做的时候,我在算术表达式中得到了一个异常错误的参数。如何解决这个问题?如果必须对结果进行四舍五入,我不想丢失数据。Elixir不允许运算符重载,因此decimal包无法使*运算符在decimal上工作。该软件包确实提供了一个函数Decimal.mult/2来乘以十进制值,该函数接受2个十进制值,您可以使用它们。您需要首先使用Decimal.new/1将整数转换为十进制,然后使用Decimal.mult/2: Elixir
Elixir不允许运算符重载,因此decimal包无法使*运算符在decimal上工作。该软件包确实提供了一个函数Decimal.mult/2来乘以十进制值,该函数接受2个十进制值,您可以使用它们。您需要首先使用Decimal.new/1将整数转换为十进制,然后使用Decimal.mult/2:
请提供有趣的代码请提供有趣的代码抱歉,我忘了提到它来自于EXTO。EXTO使用十进制软件包,所以完全相同的东西应该工作。抱歉,我忘了提到它来自于EXTO。EXTO使用十进制软件包,所以完全相同的东西应该工作。
iex(1)> d = Decimal.new("0.11111111111111111111")
#Decimal<0.11111111111111111111>
iex(2)> Decimal.mult(d, Decimal.new(3))
#Decimal<0.33333333333333333333>
iex(3)> 0.11111111111111111111 * 3 # This loses precision because Elixir's native floats are 64 bit IEEE floats
0.3333333333333333