代码之家  ›  专栏  ›  技术社区  ›  zsharp

Convert.ToInt或String.Split:哪个更有效?

  •  0
  • zsharp  · 技术社区  · 16 年前

    哪种方法更适合去除浮点数小数点,或者有更有效的方法吗?

    舍入不重要,我感兴趣的是显示数字

          Float number;            
          1- int wholeNumber= Convert.ToInt(number);
             string display=wholeNumber.ToString();
    
          2- string [] splitNumber= number.ToString().Split('.');
             string display=splitNumber[0];
    
    8 回复  |  直到 14 年前
        1
  •  5
  •   Guffa    16 年前

    以下是两种更有效的操作:

    Convert.ToInt32

    ((int)number).ToString()
    

    使用带零位小数的格式说明符格式化数字:

    number.ToString("N0")
    

    第一个应该稍微快一点,因为格式化整数比格式化浮点数更容易。

        2
  •  5
  •   Kevin Crowell    16 年前

    由于您只是删除小数点,请执行以下操作:

    int wholeNumber = (int)number;
    

    这将有效地减少小数点。请注意,它不会对数字进行舍入,但这不是您所要求的行为。

        3
  •  4
  •   Jimmy    16 年前

    1更好,因为它描述了你在做什么。在不同地区有2次休息。

        4
  •  2
  •   thecoop    16 年前
    int i = (int)number;
    string display = i.ToString();
    

    转换为int将自动删除任何小数点

        5
  •  2
  •   David    16 年前

    你试过自己决定吗?我怀疑你能否得到一个明确的答案,除非有人先试一下。

    设置一个循环,执行相同的过程1000次左右(根据需要调整数字),然后对差值计时。

        6
  •  2
  •   Hans Passant    16 年前

    许多

        7
  •  1
  •   jball    16 年前

    如果只是为了显示,请传入正确的格式字符串,您根本不需要转换:

    Float number;             
    string display=number.ToString("F0"); 
    

        8
  •  1
  •   Rob    16 年前

    [Test]
    public void Getting_whole_number()
    {
       Assert.AreEqual("5", Math.Truncate(5.5).ToString());
       Assert.AreEqual("5", ((int)5.5).ToString());
    }