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?
Известная ошибка? Или технически не ошибка - это разрешено в соответствии со стандартом?
Чтобы избавиться от нулей, я преобразовываю значение в строку, удаляя конечные нули из строки и преобразуя ее обратно в десятичную. Это довольно слабо. Кроме того, мое решение не дает точных результатов, которые я хочу. Я предпочел бы оставить конечные нули, которые являются соответственно значимыми, а не удалять все конечные нули.
Да, это [известная ошибка] (https://bugzilla.novell.com/show_bug. CGI? ID = 655780). Он старый, сверните ваши рукава;) –
Это довольно шокирует десятичный тип. –