Получение округленного значения из двойного результата - PullRequest
0 голосов
/ 13 ноября 2010

Я хочу отобразить чистую сумму расчета в двух текстовых полях

если netamount = 45.60

первое текстовое поле должно показывать округленное значение и В следующем текстовом поле должно быть показано, что округлено.

Раньше я делал это с помощью программы ручного округления, и теперь мой менеджер не хочет, чтобы я делал что-то подобное, потому что он верит, что в c # есть вся математика в функциях сборки. Поэтому, пожалуйста, помогите мне, друзья ....

Я хочу получить значение, которое округленные не числа после десятичной дроби


РЕДАКТИРОВАТЬ: ( Drachenstern )

Я хочу округлить число с 10 точностью, например 45,8456789990, и получить результат, например, 46 в одном текстовом поле и 85 в другом.

У спрашивающего есть номер типа double pi = 3.14159265d;, и он хочет получить два поля сообщения после факта: [Целое число] 3 и [2 знака после запятой] 14 и он хочет знать, как лучше всего добиться этого аффекта. Он только знает, что ему дадут удвоение, но он не знает, будет ли это число иметь дробные значения. Он ожидает их. Надеюсь, это редактирование поможет.

Ответы [ 4 ]

4 голосов
/ 13 ноября 2010

Math.Round?http://msdn.microsoft.com/en-us/library/75ks3aby.aspx

После уточнения @drachenstern:

Math.Round(value, 2)

Документы: http://msdn.microsoft.com/en-us/library/zy06z30k.aspx

2 голосов
/ 14 ноября 2010

Это можно сделать просто математически, сначала округлив, затем вычтя и умножив на 100 (если вы не хотите использовать два первых десятичных знака), а затем снова округлите так:

double pi = 3.14159265d;
int integerParth = (int)Math.Round(pi); // 3(int)
double decimalPoint = pi - integerPart; // 0.1415...(double)
int decimalPart = (int)Math.Round(decimalPoint * 100); // 14
1 голос
/ 14 ноября 2010

Я предлагаю для простоты сделать это из трех частей:

int wholeNumber; //for getting the left part of the number
int decimalPartTwoPlaces; //for assigning the right part to two characters
double pi = 3.14159265d;

wholeNumber = Math.Round(pi);
decimalPartTwoPlaces = Math.Round( ( pi - (double)wholeNumber ) * 100 ); // cast so it doesn't try and truncate the pi part

И это должно иметь значения, которые вы хотите.Я не проверял это, но это выглядит правильно.Дайте мне знать, если это не сработает, и я запусту его на своей коробке и отлажу.

1 голос
/ 14 ноября 2010

Математические функции в c # не могут дать ожидаемое значение

Я попробовал ввести 45.60, используя все математические функции, которые работают со значениями округления

Вот вывод:

Truncate            45
Round           46
Ceiling             46
Floor           45

Я думаю, что для получения результата, например, 0,60 в текстовом поле, должна использоваться какая-то другая функция, кроме этих

...