【问题标题】:Leave only two decimal places after the dot点后只保留两位小数
【发布时间】:2010-11-20 11:02:51
【问题描述】:
public void LoadAveragePingTime()
{
    try
    {
        PingReply pingReply = pingClass.Send("logon.chronic-domination.com");
        double AveragePing = (pingReply.RoundtripTime / 1.75);

        label4.Text = (AveragePing.ToString() + "ms");                
    }
    catch (Exception)
    {
        label4.Text = "Server is currently offline.";
    }
}

目前我的 label4.Text 是这样的:“187.371698712637”。

我需要它显示类似:“187.37”

DOT 之后只有两个帖子。有人可以帮帮我吗?

【问题讨论】:

  • 仅供参考 - 我认为你的意思是它应该显示 187.3*7*,而不是 .34

标签: c# ping decimal-point


【解决方案1】:

string.Format 是你的朋友。

String.Format("{0:0.00}", 123.4567);      // "123.46"

【讨论】:

  • 我再次对这个网站的速度感到惊讶。感谢您的帮助,效果很好!
  • @Steve,是的,看起来就是这样!至少你得到了更多的代表:P
  • 是的,这就是你有 11k 的原因。
  • 这会改变小数的类型,如果你想要小数,你需要再次转换回小数。如果您想保持十进制而不来回转换,我认为 Math.Round(x, 2) 是更好的答案。如果大于 5,将第 3 位四舍五入到第 2 位也是有意义的。
  • 是的,这取决于您需要什么。在这种情况下,他需要一根绳子,这就是我展示的。另外,需要明确的是,String.Format 处理舍入的方式与 Math.Round 相同。
【解决方案2】:

如果您只想在逗号后取两个数字,您可以使用数学类,例如:

float value = 92.197354542F;
value = (float)System.Math.Round(value,2);         // value = 92.2;

希望得到帮助
干杯

【讨论】:

  • 我有浮点值。所以我怎么能做同样的事情。我尝试了上面的方法,但它给出了语法错误 cannot convert type float to double
【解决方案3】:
// just two decimal places
String.Format("{0:0.00}", 123.4567);      // "123.46"
String.Format("{0:0.00}", 123.4);         // "123.40"
String.Format("{0:0.00}", 123.0);         // "123.00"

http://www.csharp-examples.net/string-format-double/

编辑

不知道他们为什么使用“String”而不是“string”,但其余的都是正确的。

【讨论】:

  • String 与 C# 中的字符串相同。我不知道为什么这种语言两者都有,但确实如此。
  • 使用哪个是个好问题。如果字符串稍后映射到更快的 String2 类会发生什么?该类是否具有相同的 Format 方法?
  • 我认为使用 String 进行静态函数调用是首选风格
  • @Yuriy - 当我们必须处理更快的 String2 类(我当然希望有一个更好的名字)时,我们将跨越那座桥
  • .Net 有 System.String,简称 String。 C# 有字符串,这是一种映射到 System.String 的本机类型。您可以使用一个代替另一个,但是在 C# 编程时,没有理由使用非 C# 名称,即使在静态中也是如此。当然,由于常见的 FormatWith 扩展方法,静态调用是否将字符串大写的问题变得不那么重要了。
【解决方案4】:
yourValue.ToString("0.00") will work.

【讨论】:

    【解决方案5】:
    double amount = 31.245678;
    amount = Math.Floor(amount * 100) / 100;
    

    【讨论】:

    • 一般来说,如果答案包括对代码的用途的解释,以及为什么在不介绍其他人的情况下解决问题的原因,答案会更有帮助。 (该帖子至少被一位用户标记,大概是因为他们认为应该删除没有解释的答案。)
    【解决方案6】:

    你可以用这个

    "String.Format("{0:F2}", 字符串值);"

    只给你点后面的两位数,正好是两位数。

    【讨论】:

      【解决方案7】:

      试试这个:

      double result = Math.Round(24.576938593,2);
      MessageBox.Show(result.ToString());
      

      输出:24.57

      【讨论】:

        【解决方案8】:

        或者,您也可以使用复合运算符 F,然后指示您希望在小数点后出现多少个小数点。

        string.Format("{0:F2}", 123.456789);     //123.46
        string.Format("{0:F3}", 123.456789);     //123.457
        string.Format("{0:F4}", 123.456789);     //123.4568
        

        它会四舍五入,所以要注意这一点。

        我获取了一般文档。那里还有很多其他的格式化操作符,你可以去看看。

        来源:https://msdn.microsoft.com/en-us/library/dwhawy9k(v=vs.110).aspx

        【讨论】:

          【解决方案9】:

          使用String的属性

          double value = 123.456789;
          String.Format("{0:0.00}", value);
          

          注意:这只能用于显示。

          使用System.Math

          double value = 123.456789;
          System.Math.Round(value, 2);
          

          【讨论】:

            【解决方案10】:

            简单的解决方案:

            double totalCost = 123.45678;
            totalCost = Convert.ToDouble(String.Format("{0:0.00}", totalCost));
            
            //output: 123.45
            

            【讨论】:

              【解决方案11】:

              double doublVal = 123.45678;

              有两种方法。

              1. 在字符串中显示:

                String.Format("{0:0.00}", doublVal );
                
              2. 为了再次获得双倍

                doublVal = Convert.ToDouble(String.Format("{0:0.00}", doublVal ));
                

              【讨论】:

                【解决方案12】:

                试试这个

                public static string PreciseDecimalValue(double Value, int DigitsAfterDecimal)
                        {
                            string PreciseDecimalFormat = "{0:0.0}";
                
                            for (int count = 2; count <= DigitsAfterDecimal; count++)
                            {
                                PreciseDecimalFormat = PreciseDecimalFormat.Insert(PreciseDecimalFormat.LastIndexOf('}'), "0");
                            }
                            return String.Format(PreciseDecimalFormat, Value);
                        }
                

                【讨论】:

                  【解决方案13】:

                  使用字符串插值decimalVar:0.00

                  【讨论】:

                  • 也许你可以在你的问题中添加更多内容,也许你可以解释为什么这可以解决问题,一些插值背景?
                  • 使用 String.Format 字符串插值可以更轻松、更直观地格式化字符串。
                  猜你喜欢
                  • 2020-09-11
                  • 1970-01-01
                  • 2011-06-14
                  • 1970-01-01
                  • 1970-01-01
                  • 2022-12-07
                  • 2022-10-12
                  • 1970-01-01
                  • 2021-06-05
                  相关资源
                  最近更新 更多