C#使用指定格式将十进制转换为字符串

tam*_*ang 7 c# string math decimal

我需要将十进制数字a转换为字符串b,如下所示:

  • b必须是天堂般的'.'角色.例如:
    • a = 12 - > b ="12.0"
    • a = 1.2 - > b ="1.2"
    • a = 1.234 - > b ="1.234"

我怎么能用1命令呢?

  • b必须完全是10个字符.例如:
    • a = 101 - > b ="101.000000"
    • a = 1.234 - > b ="1.23400000"
    • a = 1.234567891 - > b ="1.23456789"

(与1相同的问题)

Gil*_*een 8

decimal a = 12;
var b = a.ToString("N1"); // 12.0

a = 1.2m;
b = a.ToString(); // 1.2

a = 101m;
b = a.ToString("N10"); // 101.0000000000

a = 1.234m;
b = a.ToString("N10"); // 1.2340000000
Run Code Online (Sandbox Code Playgroud)

对于问题的第二部分 - 您希望总长度为10,那么:

decimal a = 1.234567891m;
int numberOfDigits = ((int)a).ToString().Length;
var b = a.ToString($"N{9 - numberOfDigits}"); //1.23456789

//Or before C# 6.0
var b = a.ToString("N" + (9 - numberOfDigits)); //1.23456789
Run Code Online (Sandbox Code Playgroud)

基本上((int)number).ToString().Length给你之前的数字量.(转换为int将删除分数)然后从数字后面的位数减少.(和小数点本身的-1)