kjv*_*kjv 145 c# string double
如何在C#中格式化Double为a String以便只有两个小数位?
如果我使用String.Format("{0:0.00}%", myDoubleValue)数字然后舍入,我想要一个没有任何舍入的简单截断.我也希望转换成String文化敏感.
Kyl*_*ndo 193
我使用以下内容:
double x = Math.Truncate(myDoubleValue * 100) / 100;
Run Code Online (Sandbox Code Playgroud)
例如:
如果该数字为50.947563并且您使用以下内容,则会发生以下情况:
- Math.Truncate(50.947563 * 100) / 100;
- Math.Truncate(5094.7563) / 100;
- 5094 / 100
- 50.94
Run Code Online (Sandbox Code Playgroud)
并且你的答案被截断了,现在要格式化字符串,只需执行以下操作:
string s = string.Format("{0:N2}%", x); // No fear of rounding and takes the default number format
Run Code Online (Sandbox Code Playgroud)
Bri*_*den 95
以下几轮数字,但只显示最多2位小数(删除任何尾随零),谢谢.##.
decimal d0 = 24.154m;
decimal d1 = 24.155m;
decimal d2 = 24.1m;
decimal d3 = 24.0m;
d0.ToString("0.##"); //24.15
d1.ToString("0.##"); //24.16 (rounded up)
d2.ToString("0.##"); //24.1
d3.ToString("0.##"); //24
Run Code Online (Sandbox Code Playgroud)
http://dobrzanski.net/2009/05/14/c-decimaltostring-and-how-to-get-rid-of-trailing-zeros/
Ces*_*Gon 32
我建议先截断,然后格式化:
double a = 123.4567;
double aTruncated = Math.Truncate(a * 100) / 100;
CultureInfo ci = new CultureInfo("de-DE");
string s = string.Format(ci, "{0:0.00}%", aTruncated);
Run Code Online (Sandbox Code Playgroud)
使用常数100进行2位截断; 在您想要的小数点后使用1后跟尽可能多的零.使用您需要的文化名称来调整格式结果.
Har*_*ter 15
最简单的方法,使用数字格式字符串:
double total = "43.257"
MessageBox.Show(total.ToString("F"));
Run Code Online (Sandbox Code Playgroud)
小智 7
我在使用 Xamarin Forms 时遇到了这个问题,并用以下方法解决了它:
percent.ToString("0.##"+"%")
Run Code Online (Sandbox Code Playgroud)
cyle函数,由Kyle Rozendo表示:
string DecimalPlaceNoRounding(double d, int decimalPlaces = 2)
{
d = d * Math.Pow(10, decimalPlaces);
d = Math.Truncate(d);
d = d / Math.Pow(10, decimalPlaces);
return string.Format("{0:N" + Math.Abs(decimalPlaces) + "}", d);
}
Run Code Online (Sandbox Code Playgroud)
小智 6
添加一个额外的小数如何四舍五入然后丢弃:
var d = 0.241534545765;
var result1 = d.ToString("0.###%");
var result2 = result1.Remove(result1.Length - 1);
Run Code Online (Sandbox Code Playgroud)