Подтвердить что ты не робот

Как получить значение после десятичной точки из двойного значения в С#?

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

Например:

23.456 ->  0.456
11.23  ->  0.23

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

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

4b9b3361

Ответ 1

x - Math.Floor(x);

текст, чтобы довести до 30 символов

Ответ 2

В 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) возвращает целое число, превышающее десятичную точку. Вы можете использовать их, если хотите использовать различную логику для положительных и отрицательных чисел.

Ответ 3

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

Пример:

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

// d = 0.456

[EDIT]

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

[/EDIT]

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

Ответ 4

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

double numberToSplit = 4.012308d;
double decimalresult = numberToSplit - (int)numberToSplit; //4.012308 - 4 = 0.012308

Ответ 5

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

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