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

我目前正在开发一个程序,正在将我的java代码转换成c。但我有点麻烦

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的经历会让像我这样的人明白挑剔别人的代码是完全没有价值的,但没有。。。