2014-10-16 5 views
3
decimal d1 = 4.0m; 
decimal d2 = 40.0m; 
decimal d = d1/d2; 
string repr = d.ToString(); 

В Windows я получаю «0,1» для публикации. На Mono (Xamarin Android) я получаю «0.1000000000000000000000000000000» или около того. Что дает? Кроме того, я видел рекомендации по делению на 1.0000000000000000000000000000m, чтобы избавиться от нежелательных конечных нулей. Это не работает ни на Xamarin Android.Точность деления типа C# отличается от Mono?

Известная ошибка? Или технически не ошибка - это разрешено в соответствии со стандартом?

Чтобы избавиться от нулей, я преобразовываю значение в строку, удаляя конечные нули из строки и преобразуя ее обратно в десятичную. Это довольно слабо. Кроме того, мое решение не дает точных результатов, которые я хочу. Я предпочел бы оставить конечные нули, которые являются соответственно значимыми, а не удалять все конечные нули.

+3

Да, это [известная ошибка] (https://bugzilla.novell.com/show_bug. CGI? ID = 655780). Он старый, сверните ваши рукава;) –

+0

Это довольно шокирует десятичный тип. –

ответ

Смежные вопросы