Ответ 1
x - Math.Floor(x);
текст, чтобы довести до 30 символов
Я хотел бы получить десятичное значение из двойного значения.
Например:
23.456 -> 0.456
11.23 -> 0.23
Может ли кто-нибудь дать мне знать, как это сделать на С#?
Спасибо, Махеш
x - Math.Floor(x);
текст, чтобы довести до 30 символов
В 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)
возвращает целое число, превышающее десятичную точку. Вы можете использовать их, если хотите использовать различную логику для положительных и отрицательных чисел.
Это то, что для оператора модуля (%). Он дает вам остаток при делении первого операнда на второй. Просто разделите число, в котором вы хотите десятичное число на 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
Я использую этот метод, когда вычисляю смещения.
double numberToSplit = 4.012308d;
double decimalresult = numberToSplit - (int)numberToSplit; //4.012308 - 4 = 0.012308
Попробуйте это.
Dim numberToSplit As Double = 4.52121
Dim decimalresult As Double = numberToSplit - Convert.ToInt64(numberToSplit)
MsgBox(decimalresult)