【发布时间】:2015-01-03 17:02:42
【问题描述】:
我收到一个编译器错误:
“方法 xxx 具有“System.Decimal”类型的参数值。“System.Decimal”不是有效的 Windows 运行时必须仅返回 Windows 运行时类型。”
无论如何我可以使用小数吗?还是我应该将值存储为整数中的美分?
【问题讨论】:
-
似乎这个(金融应用程序中的十进制与双精度问题)由同一主题的其他问题数量解决:stackoverflow.com/search?q=double+versus+decimal。简短的回答是“不要那样做”。最好使用自定义的定点数据类型(这让我很惊讶他们在 WinRT 中遗漏的许多东西......System.Decimal 绝对是其中之一)
-
嗯,我一直认为我应该使用 Decimal 来赚钱。我想我对为什么不能将 Decimal 用于代理运行时组件感到有些困惑。你能扩展一下这个自定义的定点数据类型吗?
-
如果可用,您应该使用 Decimal 来赚钱。它解决了浮点格式中存在的舍入错误。您可以研究定点,因为网上有很多关于它的内容。简短的版本是,例如,您可以保留表示便士甚至百分之一便士的整数;然后加/减就可以正常工作了,当然你必须跟踪小数的移动才能进行乘法和除法。
-
WinRT 中存在小数。
-
不是在构建 Windows 运行时组件时 - msdn.microsoft.com/en-us/library/windows/apps/… 我想我只是将它存储为整数中的美分。
标签: c# .net windows-runtime decimal enterprise