SMU*_*LER 20 c# rounding string-formatting
我需要将double值格式化为一个小数位而不进行舍入.
double value = 3.984568438706
string result = "";
Run Code Online (Sandbox Code Playgroud)
我试过的是:
1)
result = value.ToString("##.##", System.Globalization.CultureInfo.InvariantCulture) + "%";
// returns 3.98%
Run Code Online (Sandbox Code Playgroud)
2)
result = value.ToString("##.#", System.Globalization.CultureInfo.InvariantCulture) + "%";
// returns 4%
Run Code Online (Sandbox Code Playgroud)
3)
result = value.ToString("##.0", System.Globalization.CultureInfo.InvariantCulture) + "%";
// returns 4.0%
Run Code Online (Sandbox Code Playgroud)
4)(以下其他建议)
value = (value / 100);
result = String.Format("{0:P1}", Math.Truncate(value * 10000) / 10000);
// returns 4.0%
result = string.Format("{0:0.0%}",value); // returns 4.0%
Run Code Online (Sandbox Code Playgroud)
我需要显示的是3.9%的值
在此先感谢您的帮助.
Bob*_*ale 26
result=string.Format("{0:0.0}",Math.Truncate(value*10)/10);
Run Code Online (Sandbox Code Playgroud)
我会制作一个实用方法来处理这个问题:
static double Truncate(double value, int digits)
{
double mult = System.Math.Pow(10.0, digits);
return System.Math.Truncate(value * mult) / mult;
}
Run Code Online (Sandbox Code Playgroud)
然后你可以这样做:
result = Truncate(value, 1).ToString("##.#", System.Globalization.CultureInfo.InvariantCulture) + "%";
Run Code Online (Sandbox Code Playgroud)
请注意,您可能还需要Math.Floor而不是 truncate - 但这取决于您希望如何处理负值。
| 归档时间: |
|
| 查看次数: |
35330 次 |
| 最近记录: |