C#double到整数

时间:2013-01-13 21:19:25

标签: c#

假设我有double 42.433243,我想将其转换为整数42433243。

当小数长度是随机的时,这样做的代码是什么?

进一步的例子:

45.25 => 4525

125.152254 => 125152254

etc...

5 个答案:

答案 0 :(得分:6)

只要有任何小数部分,您可以将该值乘以10:

Decimal m = 42.433243m;

while (m % 1 != 0) m *= 10;
int i = (int)m;

答案 1 :(得分:2)

又快又脏:

double x = 42.25;
int big = int.Parse(x.ToString().Replace(".",""));

如果数字太大(例如溢出,int大于2 ^ 32,或者你可以在第2行用int替换double并且使它更大,这不起作用)。

如果您有其他考虑因素,请告诉我。

答案 2 :(得分:1)

也许这样的事情会起作用。

while ((double_num - Math.floor(double_num)) != 0.0) double_num *= 10;
int num = (int) double_num;

答案 3 :(得分:0)

int result = Convert.ToInt32(Regex.Match(digits.Replace(".","").Replace(",",""), @"^\d+$").Value);

答案 4 :(得分:0)

更直接的方法是将数字转换为decimal并检查位数。

前96个最低有效位表示尾数,而32个最高有效位表示指数。因此,您感兴趣的实际值是32个最低有效位。 Decimal.GetBits()方法将位作为数组int返回,因此您需要做的就是获取数组中的第一个int。只要数字不超过int.MaxValue,你就是金色的。

var number = 42.433243;
var asDecimal = (Decimal)number;
var bits = Decimal.GetBits(asDecimal);
var digits = bits[0]; // 42433243