我现在有一个数字,
string num = "1234567.015";
我想把它格式化成 : 1,234,567.02
既整数部分每三位加一个',',小数部分取前两位,第三位四舍五入。
不使用 formart和round等函数,不调用.net后援方法的情况下,有没有好的解决方案。T-T
string num = "1234567.015";
我想把它格式化成 : 1,234,567.02
既整数部分每三位加一个',',小数部分取前两位,第三位四舍五入。
不使用 formart和round等函数,不调用.net后援方法的情况下,有没有好的解决方案。T-T
var dot = string.ToCharAraay().IndexOf('.');自己折腾吧
double _d = double.Parse(num);
_d = ((int)(_d * 100) + ((_d * 1000) % 10 >= 5 ? 1 : 0)) / 100.0;
Response.Write(_d);
Response.End();
{
var arr = value.Split('.');
string s1 = string.Join("", arr[0].Select((x, i) => (arr[0].Length - i) % 3 == 0 ? "," + x.ToString() : x.ToString()).ToArray());
if (arr.GetLength == 1) return s1; else return s1 + "." + arr[1];
}
double _d = double.Parse(num);
_d = ((int)(_d * 100) + ((_d * 1000) % 10 >= 5 ? 1 : 0)) / 100.0;
Response.Write(_d.ToString("n2"));
Response.End();
double _d = double.Parse(num);
_d = ((int)(_d * 100) + ((_d * 1000) % 10 >= 5 ? 1 : 0)) / 100.0;
string _n = _d.ToString();
for (int i = _n.IndexOf('.'); i > 0; i=i - 3)
{
_n = _n.Insert(i, ",");
}
Response.Write(_n);
Response.End();
{
var arr = value.Split('.');
string s1 = string.Join("", arr[0].Select((x, i) => (arr[0].Length - i) % 3 == 0 ? "," + x.ToString() : x.ToString()).ToArray());
if (arr.GetLength == 1) return s1; else return s1 + "." + ((int.Parse(arr[1].PadRight(3, '0').SubString(0, 3)) + 5) / 10).ToString();
}
string[] _ary = num.Split('.');
int n = 6;
for (int i = _ary[0].Length - 3; i > 0; i = i - 3)
{
_ary[0] = _ary[0].Insert(i, ",");
}
Response.Write("原数:" + num +"<br/>");
Response.Write("保留" + n + "位小数:");
Response.Write(_ary[0] + (_ary.Length == 2 ? (_ary[1].Length > n ? "." + _ary[1].Substring(0, n - 1) + (int.Parse(_ary[1].Substring(n - 1, 1)) + (int.Parse(_ary[1].Substring(n, 1)) >= 5 ? 1 : 0)) : "." + _ary[1]) : ""));
Response.End();