如何从C#中的double值获得小数点后的值?

时间:2011-01-05 14:12:21

标签: .net double

我想从double值中获取十进制值。

例如:

23.456 ->  0.456
11.23  ->  0.23

有没有人让我知道如何在C#中执行此操作?

谢谢, 马赫什

5 个答案:

答案 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。我的答案实际上是不正确的。

[/编辑]

参考:http://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx

答案 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)