【问题标题】:Convert string with 5+ decimals to int将带有 5+ 小数的字符串转换为 int
【发布时间】:2013-10-24 12:05:14
【问题描述】:

我在将至少有 5 个以上小数的字符串转换为 int 时遇到问题。 它可以是这样的

var amount = "113.000000000000";,我正在寻找的结果是113

我尝试了很多不同的皈依者,但都没有运气。

我现在确实有一个可行的解决方案,它是一种扩展方法,也许不是很好的解决方案

var amount = "113.000000000000";                
if (amount.Contains("."))
{
    var index = amount.IndexOf('.');
    return int.Parse(amount.Substring(0, index));
}

感谢输入

编辑
我有这个建议,但正如我提到的那样,它是 formatException

var t = availibleQuantity.InnerText;
var test = (int) float.Parse(t.ToString(CultureInfo.InvariantCulture));

【问题讨论】:

  • 如果字符串是“113.000000000001”怎么办?
  • 永远不会消失,因为它总是小数点后 0。我应该补充一点,我无法控制我得到的价值,它是 deilverytime 以天为单位,所以它不能是 12.1 等。
  • 为什么不(int)float.Parse(amount)
  • 那你现在的解决方案有什么问题呢?
  • 在现实生活中,本以为永远不会发生的事情会经常发生;)

标签: c# type-conversion


【解决方案1】:

另一种解决方案

int m = int.Parse(amount.Split('.')[0]);

【讨论】:

    【解决方案2】:

    我会在您的int.Parse 调用中使用NumberStyles 枚举,如下所示:

    var amount = "113.000000000000";
    return int.Parse(amount, NumberStyles.Float);
    

    请注意,您必须添加using System.Globalization;,并且还有其他NumberStyles

    【讨论】:

      【解决方案3】:

      你试过了吗:

      Convert.ToInt64(Math.Floor(Convert.ToDouble(amount)));

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2023-02-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-12-20
        • 2018-06-21
        • 2020-09-11
        • 1970-01-01
        相关资源
        最近更新 更多