我想从double值中获取十进制值。
例如:
23.456 -> 0.456
11.23 -> 0.23
有没有人让我知道如何在C#中执行此操作?
谢谢, 马赫什
答案 0 :(得分:50)
System.Math中没有专门执行此操作的方法,但有两个提供了获取小数的整数部分的方法,具体取决于您希望如何表示负十进制数。
Math.Truncate(n)
将返回小数点前的数字。因此,12.3将返回12,-12.3将返回-12。然后,您将从原始数字中减去它。
n - Math.Truncate(n)
对于12.3和-12.3都会给出0.3。
使用类似的逻辑,Math.Floor(n)
返回低于小数点的整数,Math.Ceiling(n)
返回高于小数点的整数。如果您希望对正数和负数使用不同的逻辑,则可以使用这些。
答案 1 :(得分:15)
x - Math.Floor(x);
带来最多30个字符的文字
答案 2 :(得分:11)
这是模数运算符(%)的用途。在将第一个操作数除以第二个操作数时,它会为您提供重新存储器。只需将小数点后的数字除以1即可。
例如:
decimal d = new Decimal(23.456);
d = d % 1;
// d = 0.456
[编辑]
在阅读Nellius关于我的帖子的评论后,我测试了它。当使用双精度时,模数运算符实际返回0.45599999999999952。我的答案实际上是不正确的。
[/编辑]
答案 3 :(得分:3)
我计算偏移时使用此方法。
double numberToSplit = 4.012308d;
double decimalresult = numberToSplit - (int)numberToSplit; //4.012308 - 4 = 0.012308
答案 4 :(得分:0)
试试这个。
Dim numberToSplit As Double = 4.52121
Dim decimalresult As Double = numberToSplit - Convert.ToInt64(numberToSplit)
MsgBox(decimalresult)