C#中的转换错误引发异常,输入字符串格式无效。

4

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

输入字符串的格式不正确“-1.7999999999999999E-2”。

我在Excel中看不到这个值。

示例数据

-1.70152
9.335628333
-150.0145233
39.159625

C#代码

TestModel.lat = Convert.ToDecimal(c.CellValue.Text);

我的转换是否正确?在转换过程中我丢失了任何值。为了保留原始值,最好将数据类型转换为什么?


2
请注意,当您包含示例数据时,最好包含一个将失败的示例。 - Jon Skeet
2个回答

2

你的方法必须是:

TestModel.lat = Decimal.Parse(c.CellValue.Text, NumberStyles.Float);

更好的做法是使用 Decimal.TryParse ,并指定 InvariantCulture
decimal d = 0;
Decimal.TryParse("1.2345E-02", System.Globalization.NumberStyles.Float, CultureInfo.InvariantCulture, out d);

TestModel.lat = d;

@Jamiec 在这种情况下确实如此。 - Panagiotis Kanavos
我在 Linqpad 中运行代码。AllowExponent 抛出异常。Float 可以正常工作。 - Panagiotis Kanavos
@Jamec,您的评论并不期望文化不变,请尝试使用TryParse变量。 - mybirthname

-3

1) 打开您的Excel 2) 单击任何具有此值的单元格 3) 右键单击单元格 -> 格式化单元格 -> 选择常规并单击确定。它将显示您的原始值。对所有单元格进行更改。 4) 现在尝试使用您的代码读取此文件


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接