代码之家  ›  专栏  ›  技术社区  ›  devoured elysium

如何将1234.5678转换为1234.56?

c#
  •  2
  • devoured elysium  · 技术社区  · 14 年前

    我想用

            double abc = 1234.5678;
            Console.WriteLine(abc.ToString("N2"));
            Console.ReadKey();
    

    但那是屈服

    1.234,57
    

    而不是

    1234.56
    

    我怎样才能做到这一点?

    3 回复  |  直到 14 年前
        1
  •  8
  •   Jon Skeet    14 年前

    指定 invariant culture 格式化:

    Console.WriteLine(abc.ToString("N2", CultureInfo.InvariantCulture));
    

    不过,这一数字仍将达到1234.57。它现在正在打印逗号,因为您已经明确表示要使用包含数千个分隔符的“N”格式。

    如果使用“F2”,则显示“1234.57”:

    Console.WriteLine(abc.ToString("F2", CultureInfo.InvariantCulture));
    

    我不知道最好的办法来阻止它聚集。。。

        2
  •  1
  •   John Alexiou    14 年前

    试试这个

        double abc = 1234.5678; 
        Console.WriteLine("{0}", Math.Floor(abc*100)/100 ); 
        Console.ReadKey(); 
    

    //1234.56个

    或者自己做 Floor() 功能

        public double Floor(double value, int digits)
        {
            double n = Math.Pow(10, digits);
            return Math.Floor(value * n) / n;
        }
    
        3
  •  0
  •   josef.axa    14 年前

    你可以用 Math.Round 这样地:

    double abc = 1234.5678;
    double rounded = Math.Round(abc, 2);
    Console.WriteLine(rounded);
    

    它只输出两个小数位。