24

我正在尝试从十进制值中提取整数和小数部分(这两个部分都应该是整数):

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

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

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

4

5 回答 5

26
       decimal fraction = (decimal)2.78;
        int iPart = (int)fraction;
        decimal dPart = fraction % 1.0m;
于 2015-04-30T09:35:33.340 回答
4

尝试数学定义:

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

虽然,它在性能方面并没有更好,但至少它适用于负数。

于 2014-01-27T14:13:53.633 回答
3
decimal fraction = doubleNumber - Math.Floor(doubleNumber) 

或类似的东西。

于 2015-06-08T13:38:11.177 回答
2

怎么样:

int fraction = (int) ((decimalValue - integral) * 100);
于 2012-05-22T12:42:34.057 回答
1

要取出分数,您可以使用此解决方案

Math.ceil(((f < 1.0) ? f : (f % Math.floor(f))) * 10000)
于 2015-06-24T01:34:39.213 回答