只保留小数点后两位

105
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"

只保留小数点后两位。有人能帮忙吗?


2
FYI - 我认为你的意思是应该显示187.3 * 7,而不是0.34。 - Matt Grande
13个回答

201

string.Format 是你的好朋友。

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

3
我再次对这个网站的速度感到惊讶。感谢您的帮助,一切运行良好! - Sergio Tapia
@Steve,是的,看起来是这样!至少你得到了更多的声望:P - Matt Grande
8
没错,这就是你拥有1.1万的原因。 - MrBoJangles
5
如果你想保留小数,那么这会改变小数的类型,需要再次转换为小数。我认为如果想要保持小数而不来回转换,Math.Round(x, 2)是更好的方案。如果第三位数字大于5,将第三位四舍五入为第二位也是有意义的。 - Emil
2
是的,这取决于你需要什么。在这种情况下,他需要一个字符串,所以我展示了它。另外,要明确的是,String.Format处理舍入的方式与Math.Round相同。 - Matt Grande

79
如果您想取小数点后两位数字,您可以使用Math类,它为您提供了round函数,例如:

如果你想保留小数点后两位数字,可以使用 Math 类提供的 round 函数,例如:

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

希望这有所帮助
干杯


我有一个浮点值。那么我该怎么做呢?我尝试了上面的方法,但它会给出语法错误,无法将浮点类型转换为双精度。 - Rami Far

38
// 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",但其余部分是正确的。


字符串与 C# 中的 string 相同。我不确定为什么这个语言有两个,但它确实有。 - Matt Grande
该用哪个是一个很好的问题。如果将字符串后来映射到更快的String2类,会发生什么?那个类是否具有相同的Format方法? - Yuriy Faktorovich
4
我认为,在静态函数调用时使用字符串是首选风格。 - Joe H
@Yuriy - 当我们需要处理更快的String2类(我希望它有一个更好的名称)时,我们将解决这个问题。 - Matt Grande
你怎么可能有比String2更好的东西,比如SuperString?还有它更快的兄弟SuperAwesomeString? - Yuriy Faktorovich
3
.Net有System.String,简称为String。C#有string,这是一种本地类型,可以映射到System.String。你可以在其中一个的位置上使用另一个,但在编写C#程序时,没有理由使用非C#名称,甚至在静态调用中也是如此。当然,由于常见的FormatWith扩展方法,对于静态调用是否将字符串首字母大写的问题变得不那么重要了。 - Steven Sudit

11
yourValue.ToString("0.00") will work.

9
double amount = 31.245678;
amount = Math.Floor(amount * 100) / 100;

3
通常情况下,如果回答包括代码的用途以及解决问题的原因且没有引入其他问题,那么它们会更有帮助。(此帖子被至少一个用户标记,可能是因为他们认为没有解释的答案应该被删除。) - Nathan Tuggy

7

您可以使用以下方法:

"String.Format("{0:F2}", String Value);"

这个方法会返回小数点后的两位数字,准确地说是两位数字。


5

试试这个:

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

输出:24.57


3

简单解决方案:

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

//output: 123.45

3

double doublVal = 123.45678;

有两种方法。

  1. for display in string:

    String.Format("{0:0.00}", doublVal );
    
  2. for geting again Double

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

2

利用String属性

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

注意:这只能用于显示。
使用 System.Math。
double value = 123.456789;
System.Math.Round(value, 2);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接