我的价值如下:
decimal val = 1.100;
现在我想要做的是,如果我在第一个小数点后的值为0,那么我想只取1.1并忽略休息,如果我有1.11那么我想取整个1.11
这就是我的想法:
1)将十进制转换为字符串。
2)按点分割。
3)检查长度是否为2,如果第二个位置大于0,则取整数,如11为十进制值1.11否则,如果十进制像这样1.10则取1.1否则取小数为1.000
示例输入和输出:
1.000 // output 1.0
1.100 // output 1.1
1.110 // output 1.11
1.111 // output 1.111
1.102 // output 1.102
但这是我想要避免的肮脏逻辑。有没有内置的方式或更好的方法来做到这一点?
注意:我不想做任何事情。
答案 0 :(得分:5)
您可以使用custom numeric format string:
val.ToString("0.0##")
答案 1 :(得分:0)
希望你喜欢这个逻辑。请试试这个。
double val = 1.002;
string output = !val.ToString().TrimEnd('0').Contains('.') ? string.Format("{0}.0", val) : val.ToString().TrimEnd('0');
如果值为1.00,那么我的输出将为1.0
然后您可以将此字符串转换为其他数据类型。