2011-01-26 2 views
1

В настоящее время я работаю над программой и im конвертирует свой Java-код в C#. но у меня проблемы.C# Double Rounding

public double round(double value){ 
     BigDecimal b = new BigDecimal(value); 
     b = b.setScale(2,BigDecimal.ROUND_UP); 
     return (b.doubleValue()); 
    } 

я написал этот преобразующий код, но я не могу преобразовать его в тип C# .BigDecimal вызывает некоторые проблемы, и им совершенно новые для .Net.Definitely нужна помощь.

Редактировать: Хорошо почки я получил его, извините за немой вопрос.

+0

Похоже, .NET не имеет эквивалент BigDecimal в Java - [переполнение стека] (http://stackoverflow.com/questions/2863388/what-is-the-equivalent-for-java- класса BigDecimal-в-с). Он имеет десятичную дробь, но имеет только конечную точность. Этого достаточно для того, что вы хотите сделать? – mgiuca

+0

Фактически, мне не нужен этот тип на всех. Мне нужно реализовать двойное округление, как я сделал с bigdecimal. – thecodekid

ответ

4

Не могли бы вы просто сделать это, чтобы округлить до 2 дробных цифр?

 double foo = 3.143; 
     double fooRounded = Math.Round(foo, 2); 
+1

Это будет использовать по умолчанию значение «MidpointRounding.ToEven», что приведет к несколько иным результатам, чем «ROUND_UP» 'в оригинале java. – MusiGenesis

+0

@MusiGenesis - Полностью согласен, я просто показывал простое округление с помощью Math.Round, чтобы точно воспроизвести поведение, как показано в методе OP выше, чем ваш обновленный ответ должен быть принят, надеюсь, он все еще читает это. – BrokenGlass

+0

Вы могли бы подумать, что опыт SO научит кого-то вроде меня абсолютной нехваткой ценности при подборе кода чужого, но нет ... – MusiGenesis

5

Вот метод # C, который можно использовать вместо:

public double round(double value){ 
    return Math.Round(value, 2, MidpointRounding.AwayFromZero); 
} 

.Net-х MidpointRounding.AwayFromZero является эквивалентом в Java ROUND_UP.