我使用以下代码将指数数字转换为字符串。它正在部分工作。 请帮我这样做。
这是我的指数是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();
答案 0 :(得分:1)
您说您正在使用的号码4.00658121201306E+16
与40065812120130567
不同。最后两位数字被删除,因为指数形式没有这些数字作为数字的一部分。
最后两位数字根本不存储在该数字中。所有指数表示法都是基本上告诉小数点应该在哪里。你看到的就是你得到的价值的精确度,并且你不会在六个之后给程序任何数字。因此,在六点之后它不会给你任何数字。
答案 1 :(得分:0)
您可以尝试以下代码
var num = Decimal.Parse("4.00658E+16", System.Globalization.NumberStyles.Float);
答案 2 :(得分:0)
建议使用BigInteger类:
var number = BigInteger.Parse("400658121201306000000000000");