我想从double值中获取十进制值.
例如:
23.456 -> 0.456
11.23 -> 0.23
Run Code Online (Sandbox Code Playgroud)
任何人都可以让我知道如何在C#中做到这一点?
谢谢,马赫什
Nel*_*ius 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)返回高于小数点的整数.如果您希望对正数和负数使用不同的逻辑,则可以使用这些.
W.J*_*son 11
这就是模数运算符(%)的用途.在将第一个操作数除以第二个操作数时,它会为您提供重新存储器.只需将小数点后的数字除以1即可.
例如:
decimal d = new Decimal(23.456);
d = d % 1;
// d = 0.456
Run Code Online (Sandbox Code Playgroud)
[编辑]
在阅读了Nellius关于我的帖子的评论后,我测试了它.当使用双精度时,模数运算符实际返回0.45599999999999952.我的回答实际上是错误的.
[/编辑]
参考:http://msdn.microsoft.com/en-us/library/0w4e0fzs.aspx