我正在将我的功能从普通类库转换为 PCL。
在普通的 c# 类库中,我们可以将三个参数传递给 math.Round 函数来四舍五入一个十进制数。
以前我们使用过 math.Round 如下

Math.Round(value,digit, MidpointRounding.AwayFromZero) .

但是在PCL中我可以看到“MidpointRounding.AwayFromZero”枚举不可用。我可以在PCL中做同样的操作吗?

我将我的 PCL 定位到“.Net framework 4.5”、“Xamarin.IOs”、“Xmarin.Android”和 Silverlight 5。实际上我不需要将 PCl 支持到 Silverlight 5。但我无法删除这个 Silverlight 5 支持。

最佳答案

这是设计使然,它是 Silverlight 的挂断。它属于 .NETCore 子集,Phone7 和 .NET Compact Framework 等其他框架都在该集合中。主要目标是使 .NET 安装尽可能紧凑,因为 Silverlight 在用户访问需要它的网站(如 Netflix)时在 10 秒或更短的时间内下载运行时是一个强大的目标。当然,这只能通过从 CLR 和框架中减去大块来工作,您想要使用的 Math.Round() 重载被切断以到达那里。

因此,您在 PCL 项目中看到的可用结果是一个自动结果。它保护您免于使用在目标平台之一上不可用的类和方法,从而使您的程序失败,只需隐藏它们即可。

你将不得不利用现有的东西凑合。您将获得 MidpointRounding.ToEven,默认值。一种可能的解决方法是乘以 10 的幂,加上 0.5,四舍五入到 0 位,然后再次除以。

关于c# - PCL 中的 Math.Round 函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22194916/

10-13 06:10