如何将以下示例数字(十进制、双精度或浮点数)转换为小数点后两位,并将数字向右截断(向下舍入):
77.1455
52.00
714.1554
5552.0001
Run Code Online (Sandbox Code Playgroud)
应该变成这样
"77.14"
"52"
"714.15"
"5552"
Run Code Online (Sandbox Code Playgroud)
有的建议
String.Format("G29");
String.Format("0.00");
Run Code Online (Sandbox Code Playgroud)
但它们并没有按预期工作。
小智 7
使用“####.##”模式通过自然舍入实现所需的结果(请参阅下面的截断示例)。几个例子:
var f1 = 1000.3455f;
var result = f1.ToString("####.##");
//result = 1000.35
Run Code Online (Sandbox Code Playgroud)
向下舍入消除尾随零:
f1 = 1000.0001f;
result = f1.ToString("####.##");
//result = 1000;
Run Code Online (Sandbox Code Playgroud)
将逗号 if 添加到逗号分隔数字 >= 1000 的格式字符串中:
var f1 = 1000.3455f;
f1.ToString("#,###.##");
//result = 1,000.35;
Run Code Online (Sandbox Code Playgroud)
如果您想在不进行自然舍入的情况下删除超过百分之一的尾随数字:
var f1 = 1000.3455f;
f1 = (float)Math.Round(f1, 2, MidpointRounding.ToZero);
result = f1.ToString("#,###.##");
//result = 1,000.34
Run Code Online (Sandbox Code Playgroud)
您可以截断两位小数后的值:
(Math.Truncate(100 * value) / 100).ToString();
Run Code Online (Sandbox Code Playgroud)
完整样本:
static void Main(string[] args)
{
float[] values = { 77.1455f, 52.00f, 714.1554f, 5552.0001f };
string[] formattedValues = Format(values);
Console.WriteLine(string.Join(Environment.NewLine, formattedValues));
}
private static string[] Format(float[] values)
{
return Array.ConvertAll(values, Convert);
}
private static string Convert(float value)
{
return (Math.Truncate(100 * value) / 100).ToString();
}
Run Code Online (Sandbox Code Playgroud)