C# 将指数数转换为字符串

C# 将指数数转换为字符串,c#,C#,我正在使用下面的代码将指数数转换为字符串。它部分起作用了。 请帮我做这个 这是我的指数数字是4.00658E+16//,文本格式为“40065812120130567” 下面的代码将此号码转换为40065812120130600。有时它不转换最后两位数字。请帮我解决这个问题 decimal device; string dvc_id = Convert.ToString(dt.Rows[i][4]);//dt.Rows[i][4] decimal.TryParse(dvc_id, Num

我正在使用下面的代码将指数数转换为字符串。它部分起作用了。 请帮我做这个

这是我的指数数字是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();

你能试试下面的代码吗

var num = Decimal.Parse("4.00658E+16", System.Globalization.NumberStyles.Float);

你能试试下面的代码吗

var num = Decimal.Parse("4.00658E+16", System.Globalization.NumberStyles.Float);

建议使用BigInteger类:

var number = BigInteger.Parse("400658121201306000000000000");

建议使用BigInteger类:

var number = BigInteger.Parse("400658121201306000000000000");

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


最后两位数字根本不存储在该数字中。从本质上讲,指数记数法所做的就是告诉小数点应该在哪里。你所看到的是你从数值的精度方面得到的,并且你没有给程序在6后面的任何数字。因此,它不会在六后面给您任何数字。

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



最后两位数字根本不存储在该数字中。从本质上讲,指数记数法所做的就是告诉小数点应该在哪里。你所看到的是你从数值的精度方面得到的,并且你没有给程序在6后面的任何数字。因此,它不会在六位之后给您任何数字。

您能用
dvc\u id
的值更新样本吗<代码>十进制.TryParse(“40065812120130567”,输出设备)生成的结果与您所说的完全相同。是否使用了指数数?指数数不是同一个数。前8位之后的每个数字都会下降。请查看我更新的问题。dt.Rows[i][4]是什么数据类型?能否请您使用
dvc_id
的值更新样本<代码>十进制.TryParse(“40065812120130567”,输出设备)生成的结果与您所说的完全相同。是否使用了指数数?指数数不是同一个数。前8位之后的每个数字都会下降。请查看我的更新问题。dt.Rows[i][4]是什么数据类型?您是否包括System.Numerics的参考?它返回的错误值无法比较。我使用的是低于指数的4.00658121201306E+16您是否包括System.Numerics的参考?它返回的错误值无法比较。我使用的是低于指数的4.00658121201306E+16我只是从csv上传数字。它有一个记录“40065812120130567”。现在我想把这个数字转换成字符串。如果它是指数形式,那么这些数字就会丢失
Decimal
可以处理这么大的数字,所以您发布的代码中没有什么是不好的。无论发生什么错误,都必须在过程的早期,并且不包括在您的问题中。但是,如果如您所说,“我在代码中的任何一点使用下面的指数4.00658121201306E+16”,则您将丢失这些数字。看看你对指数表示法的使用。我只是从csv上传了数字。它有一个记录“40065812120130567”。现在我想把这个数字转换成字符串。如果它是指数形式,那么这些数字就会丢失
Decimal
可以处理这么大的数字,所以您发布的代码中没有什么是不好的。无论发生什么错误,都必须在过程的早期,并且不包括在您的问题中。但是,如果如您所说,“我在代码中的任何一点使用下面的指数4.00658121201306E+16”,则您将丢失这些数字。看看你对指数记数法的用法。