Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
c#抛出异常输入字符串中的转换错误格式无效_C# - Fatal编程技术网

c#抛出异常输入字符串中的转换错误格式无效

c#抛出异常输入字符串中的转换错误格式无效,c#,C#,我在将字符串转换为十进制时遇到问题。我的C#代码正在从exel文件读取以下数据,并向我抛出以下错误 decimal d = 0; Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d); TestModel.lat = d; 输入字符串的格式不正确“-1.799999999999E-2” decimal d = 0; Decimal

我在将字符串转换为十进制时遇到问题。我的C#代码正在从exel文件读取以下数据,并向我抛出以下错误

decimal d = 0;
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d);

TestModel.lat = d;
输入字符串的格式不正确“-1.799999999999E-2”

decimal d = 0;
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d);

TestModel.lat = d;
我在excel值中看不到此值

decimal d = 0;
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d);

TestModel.lat = d;
示例数据

-1.70152
9.335628333
-150.0145233
39.159625
decimal d = 0;
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d);

TestModel.lat = d;
c#代码

TestModel.lat = Convert.ToDecimal(c.CellValue.Text);
decimal d = 0;
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d);

TestModel.lat = d;
我的转换正确吗。我在转换过程中丢失了所有值。为了保持原始值不变,最好的数据类型是什么?

您的方法必须是:

TestModel.lat = Decimal.Parse(c.CellValue.Text, NumberStyles.Float);
decimal d = 0;
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d);

TestModel.lat = d;
最好使用
Decimal.TryParse
,并指定
InvariantCulture

decimal d = 0;
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d);

TestModel.lat = d;
1) 打开你的excel 2) 单击具有此值的任何单元格 3) 右键单击单元格->设置单元格格式->选择常规,然后单击确定。它将显示原始值。对所有单元格进行更改。
4) 现在尝试使用ur代码阅读此文件

注意,当您包含示例数据时,它有助于包含一个将失败的示例…@jamice在本例中是这样的。我在Linqpad中运行代码。AllowExponent抛出。浮动works@Jamec您的评论不希望文化是不变的,请尝试TryParse variant。
decimal d = 0;
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d);

TestModel.lat = d;