1

我正在使用下面的代码将指数数转换为字符串。它正在部分工作。请帮助我做到这一点。

这是我的指数是 4.00658E+16 //在文本格式 '40065812120130567'

下面的代码将此数字转换为 40065812120130600。有时它没有转换最后两位数字。请帮我解决这个问题。

 decimal device;
 string dvc_id = Convert.ToString(dt.Rows[i][4]);//dt.Rows[i][4]

 decimal.TryParse(dvc_id, NumberStyles.Any, CultureInfo.InvariantCulture, out device);
 dvc_id = device.ToString();
4

3 回答 3

1

4.00658121201306E+16您说您正在使用的数字与 不同40065812120130567。最后两位数字被删除,因为指数形式没有这些数字作为数字的一部分。

最后两位数字根本不存储在该号码中。本质上,所有指数符号所做的都是告诉小数点应该在哪里。你看到的是你得到的值的精度,你没有给程序在六位之后的任何数字。因此,它不会在六位之后给您任何数字。

于 2013-06-22T04:42:26.913 回答
0

你可以试试下面的代码

var num = Decimal.Parse("4.00658E+16", System.Globalization.NumberStyles.Float);
于 2013-06-22T04:25:01.370 回答
0

建议使用 BigInteger 类:

var number = BigInteger.Parse("400658121201306000000000000");
于 2013-06-22T04:27:16.390 回答