.net 数学。以3.75为整数

.net 数学。以3.75为整数,.net,rounding,.net,Rounding,我怎么做数学,从3.75到3.7轮 我尝试了以下选项: Math.Round(3,75d,1,MidpointRounding.AwayFromZero) == 3.8 Math.Round(3,75d,1,MidpointRounding.ToEven) == 3.8 编辑: 一些背景。我需要3.6、3.5、4.2和3.7的平均值,但要求是3.7大于3.8 n = 3.75; a = System.Math.Round (n, 2, MidpointRounding.ToEven);

我怎么做数学,从3.75到3.7轮

我尝试了以下选项:

Math.Round(3,75d,1,MidpointRounding.AwayFromZero) == 3.8
Math.Round(3,75d,1,MidpointRounding.ToEven) == 3.8
编辑: 一些背景。我需要3.6、3.5、4.2和3.7的平均值,但要求是3.7大于3.8

n = 3.75;
a = System.Math.Round (n, 2, MidpointRounding.ToEven);       // 3.70
b = System.Math.Round (n, 2, MidpointRounding.AwayFromZero); // 3.80
也可以尝试
Math.Floor


在工作中使用
a

我认为不能用
Math.Floor
指定十进制精度。但你可以试试:

Math.Floor(num * 10) / 10
我相信
Math.Floor
返回一个双精度。因此,这应该是可行的。

因此,而不是传统的=x.5=x+1规则,即1.04轮到1.0,1.05轮到1.1。你想一直下去吗


你可以在地板上这样做(如前面的回答所示),但我认为这会给负数带来问题-你需要做一些测试(因此,如果您的数字是try Math,您需要使用“if”子句来使用天花板。在标题中,我还建议使用
decimal
。您的具体案例使用
double
,因为0.75是3/4。但是像
x.15
这样的数字不能表示为double。您能提供一些额外的上下文吗?其他一些cases?例如,你总是在这里除以4吗?把常数3.7放在这里有意义吗?
返回3.7
符合你告诉我们的要求,但这肯定不是你想要的。你需要澄清你的问题,但告诉我们以下输入应该返回什么:
-3.75
-3.76
3.76
3.85
什么“要求”这样说?是为了模拟
todd
ToZero
四舍五入吗?因为要求规则必须在某些/数字范围内统一才能有用。解释如何对任意数字进行四舍五入。重要的是我只有一个小数。@RuneFS,然后-3.75仍将变为3.8
Floor
sh如果你使用JRSmith发布的代码,就不需要了。先乘以10,然后在截断后除以10,就可以解决这部分问题。但是如果你不回答我和Bob的问题,我们就不能告诉你这是否真的解决了你的问题。这就是我不证明的原因正在读我的伪代码。很好地抓住里德。