Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Elixir 十进制和整数相乘会抛出“算术表达式中的错误参数”_Elixir_Ecto - Fatal编程技术网

Elixir 十进制和整数相乘会抛出“算术表达式中的错误参数”

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:


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