将十进制变量拆分为积分和分数部分

时间:2012-05-22 12:38:46

标签: c# decimal fractions integral

我试图从十进制值中提取积分和小数部分(两个部分应该是整数):

decimal decimalValue = 12.34m;
int integral = (int) decimal.Truncate(decimalValue);
int fraction = (int) ((decimalValue - decimal.Truncate(decimalValue)) * 100);

(为了我的目的,十进制变量最多包含2个小数位)

有没有更好的方法来实现这一目标?

5 个答案:

答案 0 :(得分:14)

       decimal fraction = (decimal)2.78;
        int iPart = (int)fraction;
        decimal dPart = fraction % 1.0m;

答案 1 :(得分:3)

decimal fraction = doubleNumber - Math.Floor(doubleNumber) 

或类似的东西。

答案 2 :(得分:2)

怎么样:

int fraction = (int) ((decimalValue - integral) * 100);

答案 3 :(得分:2)

尝试数学定义:

var fraction = (int)(100.0m * (decimalValue - Math.Floor(decimalValue)));

虽然它在性能意义上并不是更好,但它至少适用于负数。

答案 4 :(得分:1)

要取出分数,您可以使用this solution

Math.ceil(((f < 1.0) ? f : (f % Math.floor(f))) * 10000)