Как получить значение после десятичной точки из двойного значения в C #? - PullRequest
17 голосов
/ 05 января 2011

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

Например:

23.456 ->  0.456
11.23  ->  0.23

Может кто-нибудь дать мне знать, как это сделать в C # ??

Спасибо, Махеш

Ответы [ 5 ]

50 голосов
/ 05 января 2011

В System.Math нет метода, который бы специально это делал, но есть два, которые обеспечивают способ получить целую часть вашего десятичного числа в зависимости от того, как вы хотите, чтобы отрицательные десятичные числа были представлены.

Math.Truncate(n) вернет число до десятичной точки. Таким образом, 12,3 вернет 12, а -12,3 вернет -12. Затем вы вычли бы это из своего исходного числа.

n - Math.Truncate(n) даст 0,3 для 12,3 и -12,3.

Используя аналогичную логику, Math.Floor(n) возвращает целое число ниже десятичной точки, а Math.Ceiling(n) возвращает целое число выше десятичной точки. Вы можете использовать их, если хотите использовать другую логику для положительных и отрицательных чисел.

15 голосов
/ 05 января 2011

x - Math.Floor (x);

текст для увеличения до 30 символов

11 голосов
/ 05 января 2011

Это то, для чего предназначен оператор модуля (%).Это дает вам остаток при делении первого операнда на второй.Просто разделите десятичное число на 1.

Пример:

decimal d = new Decimal(23.456);
d = d % 1;

// d = 0.456

[РЕДАКТИРОВАТЬ]

Прочитав комментарий Неллиуса о моем сообщении, я проверил его.При использовании удваиваний оператор модуля фактически возвращает 0,45599999999999952.Мой ответ на самом деле неверен.

[/ EDIT]

Ссылка: http://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx

3 голосов
/ 02 октября 2014

Я использую этот метод, когда вычисляю смещения.

double numberToSplit = 4.012308d;
double decimalresult = numberToSplit - (int)numberToSplit; //4.012308 - 4 = 0.012308
0 голосов
/ 06 января 2016

Попробуйте это.

    Dim numberToSplit As Double = 4.52121
    Dim decimalresult As Double = numberToSplit - Convert.ToInt64(numberToSplit)
    MsgBox(decimalresult)
...