繁体   English   中英

C# String.Format() 删除百分位后的小数,如果小数是尾随零,则完全删除小数

[英]C# String.Format() to remove decimals after hundredths and remove decimals completely if decimals are trailing zeros

这些花车

77.1455
52.00
714.1554
5552.0001

应该变成这样

77.14
52
714.15
5552

有人建议

String.Format("G");
String.Format("G29");
String.Format("0.00");

但它们不能按我的需要工作。

使用“####.##”模式通过自然舍入来实现所需的结果(请参阅底部截断示例)。 几个例子:

var f1 = 1000.3455f;
var result = f1.ToString("####.##");
//result = 1000.35

舍入向下消除尾随零:

f1 = 1000.0001f;
result = f1.ToString("####.##");
//result = 1000;

在逗号分隔的数字 >= 1000 的格式字符串中添加逗号 if:

var f1 = 1000.3455f;
f1.ToString("#,###.##");
//result = 1,000.35;

如果你想在没有自然舍入的情况下删除超过百分之一的尾随数字:

var f1 = 1000.3455f;
f1 = (float)Math.Round(f1, 2, MidpointRounding.ToZero);
result = f1.ToString("#,###.##");
//result = 1,000.34

您可以截断小数点后两位的值:

(Math.Truncate(100 * value) / 100).ToString();

完整样本:

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();
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM