double在c#中表示2个非零小数

本文关键字:小数 2个 表示 double | 更新日期: 2023-09-27 18:08:52

我想以字符串格式显示双变量的最大2个小数。如何写一个函数来显示非零小数?

的例子:

double intVar = 1;
double oneDice = 1.1;
double twoDice = 1.11;
double threeDice = 1.111;
Console.writeLine(yourFunction(intVar)); //output  1
Console.writeLine(yourFunction(oneDice)); //output  1.1
Console.writeLine(yourFunction(twoDice)); //output  1.11
Console.writeLine(yourFunction(threeDice)); //output  1.11

double在c#中表示2个非零小数

从我的评论中的链接,https://stackoverflow.com/a/2453982/6741868和其他一些代码:

public string yourFunction(double val)
{
    double x = val;
    if (BitConverter.GetBytes(decimal.GetBits((decimal)val)[3])[2] > 2)   //check if there are more than 2 decimal places
    {
        x = Math.Truncate(val * 100) / 100;           
        string s = string.Format("{0:N2}", x);
        return s;
    }
    return x.ToString();
}

如果有超过2位小数,它将截断其余部分(NOT round)并转换为显示2位小数的字符串。

否则,它只是返回原始值,并转换为字符串。

请根据您的进一步需要随意修改函数,或者如果您想稍微调整输出字符串。

编辑

个人测试值:

1,1.1, 1.11, 1.111, 1.138234732

结果:

1,1.1, 1.11, 1.11, 1.13