C#双舍入
我目前正在开发一个程序,正在将我的java代码转换成c。但我有点麻烦C#双舍入,c#,java,double,C#,Java,Double,我目前正在开发一个程序,正在将我的java代码转换成c。但我有点麻烦 public double round(double value){ BigDecimal b = new BigDecimal(value); b = b.setScale(2,BigDecimal.ROUND_UP); return (b.doubleValue()); } 我写了这个转换代码,但我不能将它转换成c#。BigDecimal类型会导致一些问题,我对.N
public double round(double value){
BigDecimal b = new BigDecimal(value);
b = b.setScale(2,BigDecimal.ROUND_UP);
return (b.doubleValue());
}
我写了这个转换代码,但我不能将它转换成c#。BigDecimal类型会导致一些问题,我对.Net完全陌生。我确实需要一些帮助
编辑:好的,我明白了,很抱歉这个愚蠢的问题 这里有一个C#方法,你可以用它来代替:
public double round(double value){
return Math.Round(value, 2, MidpointRounding.AwayFromZero);
}
.Net的中点舍入.AwayFromZero
相当于java的舍入方法
public double round(double value){
return Math.Round(value, 2, MidpointRounding.AwayFromZero);
}
.Net的中点舍入.AwayFromZero
相当于java的向上舍入
难道你就不能这样舍入到两个小数位数吗
double foo = 3.143;
double fooRounded = Math.Round(foo, 2);
你就不能这样把小数位数四舍五入到2吗
double foo = 3.143;
double fooRounded = Math.Round(foo, 2);
看起来.NET没有Java的BigDecimal的等价物--。它有十进制,但精度有限。这足以满足您的需要吗?实际上我根本不需要这种类型。我所需要的是实现双舍入,就像我对BigDecimalLook所做的那样。NET没有Java的BigDecimal--。它有十进制,但精度有限。这就足够你想做的了吗?实际上我根本不需要那种类型。我需要的是实现双舍入,就像我使用BigDecimal时所做的那样,它实际上会使用中点舍入。默认情况下,ToEven
,这将产生与java原版中的
四舍五入稍有不同的结果。@MusiGenesis-完全同意,我只是用Math显示简单的四舍五入。四舍五入,要准确地复制OP的方法中所示的行为,你的更新答案应该是可以接受的-希望他还在读这篇文章。你可能会认为SO的经历会让像我这样的人知道挑剔别人的代码完全没有价值,但不……实际上会使用中点舍入。默认情况下,ToEven
,这将产生与java原版中的四舍五入稍有不同的结果。@MusiGenesis-完全同意,我只是用Math显示简单的四舍五入。四舍五入,要准确地复制OP的方法中所示的行为,你的更新答案应该是可以接受的-希望他还在读这篇文章。你可能会认为SO的经历会让像我这样的人明白挑剔别人的代码是完全没有价值的,但没有。。。