【问题标题】:How to Convert string("1.0000") to int如何将字符串(“1.0000”)转换为整数
【发布时间】:2020-07-31 17:48:30
【问题描述】:

大部分小数点后4位的字符串格式数据需要转成int。 我试过这个但不起作用,甚至直接使用这个 Convert.ToInt16() 但仍然不起作用:

Int32 result;
bool status = Int32.TryParse(v, out result);

还有其他方法可以转换吗?

谢谢。

【问题讨论】:

  • 尝试使用 Convert.ToInt32()。
  • 你为什么不用decimal.TryParse

标签: c# string int valueconverter


【解决方案1】:

可以先转成Double,再转成Int32

String s = "1.0000";
Double temp;

Boolean isOk = Double.TryParse(s, out temp);

Int32 value = isOk ? (Int32) temp : 0;

【讨论】:

    【解决方案2】:

    您可以使用以下内容:

    string data = "1.0000";
    int number
    if(data.Contains('.'))
        number = int.Parse(data.Substring(0, data.IndexOf('.'))); //Contains decimal separator
    else
        number = int.Parse(data); //Contains only numbers, no decimal separator.
    

    因为1.0000有小数位,所以先去掉string的小数位,然后解析字符串为int

    【讨论】:

    • 如果没有点(或用逗号代替)则抛出异常,并将10.000.000 解释为 10 而不是 1000 万(点作为组分隔符)
    • @TimSchmelter 问题是关于一个以点作为小数分隔符的数字。这意味着文化使得点不会成为组分隔符。我同意不足之处,会改进
    【解决方案3】:

    您必须将其解析为十进制,然后转换为 int。

    decimal resultTmp;
    bool status = Decimal.TryParse("1.000".Replace(".",","), out resultTmp);
    int result = (int)resultTmp;
    

    同时改变'.'到','

    【讨论】:

    • 为什么要改'.'至 ','?这取决于文化。
    • 是的,最好将 CurrentCulture 作为参数。我不得不更改它,因为我的格式不正确。
    猜你喜欢
    • 2010-10-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 1970-01-01
    相关资源
    最近更新 更多