【问题标题】:Conversion error in c# throwing exception input string was in invalid format [duplicate]c#中的转换错误抛出异常输入字符串格式无效[重复]
【发布时间】:2017-04-27 02:53:27
【问题描述】:

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

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

我在我的 excel 值中看不到这个值。

示例数据

-1.70152
9.335628333
-150.0145233
39.159625

c#代码

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

我的转换是否正确。我在转换过程中失去了任何价值。为了保持原来的值,最好转换成什么数据类型?

【问题讨论】:

  • 请注意,当您包含示例数据时,包含一个将失败的示例会有所帮助....

标签: c#


【解决方案1】:

你的方法必须是:

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 在这种情况下会这样做。
  • 我在 Linqpad 中运行代码。 AllowExponent 抛出。浮动工程
  • @Jamec 你的评论不希望文化是不变的,试试 TryParse 变体。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-21
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-26
    • 1970-01-01
    相关资源
    最近更新 更多