我收到编译错误:
“方法xxx的参数值类型为”System.Decimal“。”System.Decimal“不是有效的Windows运行时必须只返回Windows运行时类型。”
无论如何我可以使用小数?或者我应该将值存储为整数美分?
答案 0 :(得分:0)
我发现最简单的解决方案是将其存储为整数美分。
我认为这可能不适用于世界上所有的货币,但我只关注美元,因此在这种特殊情况下不是问题。
另一种方法是实施“金钱”模式 - http://martinfowler.com/eaaCatalog/money.html
答案 1 :(得分:0)
实际上,我发现最简单的方法是使用double
作为WinRT组件的返回值和参数。
这就是我在C#类库中的内容
public static double Round(double value, int digits)
{
// do stuff
}
这是我作为从我的JavaScript代码调用的包装器创建的C#Windows运行时可移植类库的代码
public static double Round(double val, int digits)
{
return MyCSharpClassLib.Class.Round(val, digits);
}
从我的JavaScript项目中,这就是我所说的
var round = WindowsRuntimeWrapper.Class1.round(3.1415926549, 3);
它运作得很好!