如何在数字后面显示两个小数点?
我试过以下:
var hrs = (from p in Hours.Where(h.UserName == UserName())
group p by p.Hours into g
select g.Sum(p => p.Hours)).Sum().ToString("#.##");
return Json(new { data = Convert.ToDouble(hrs).ToString("#.##") });
但如果没有Convert.ToDouble()
并且ToString("#.##")
显示小时“9”
我们如何通过查询上述数据库来格式化结果?
答案 0 :(得分:2)
Linq查询的结果将是IEnumerabl<string>
(或IQueryable<string>
)。你需要做这样的事情:
var hrs =
(from p in Hours.Where(h.UserName == UserName())
group p by p.Hours into g
select g.Sum(p => p.Hours));
return Json(new { data = hrs.Select(x => x.ToString("N2")) });
答案 1 :(得分:2)
ToString(“N2”)用于显示两个小数点
var hrs = (from p in Hours.Where(h.UserName == UserName())
group p by p.Hours into g
select g.Sum(p => p.Hours)).ToString("#.##");
return Json(new { data = Convert.ToDouble(hrs).ToString("N2") });
答案 2 :(得分:1)
使用ToDouble(hrs).ToString("f2")
答案 3 :(得分:1)
您的查询结果不是一个double
,而是IEnumerable<double>
,您的用户所属的每个群组都有一个条目。
您需要在结果中添加另一个.Sum()
(以获取您的用户所在的所有群组的总和)。从那以后,你可以做ToString("0.00")
。您还不需要额外的Convert()
和ToString()
var hrs = (from p in Hours.Where(h => h.UserName == UserName())
group p by p.Hours into g
select g.Sum(p => p.Hours)).Sum().ToString("0.00");
return Json(new { data = hrs });
修改强>
将ToString("#.##")
更改为ToString("0.00")
。或者,使用ToString("N2")
。
编辑#2:
除非您的分组有某些原因,否则我会简化您的LINQ语句和随后的Json
调用:
var hrs = (from p in Hours
where p.UserName == UserName()
select p.Hours).Sum();
return Json(new { data = hrs.ToString("0.00") });
答案 4 :(得分:0)
尝试:
Json(new { data = Convert.ToDouble(hrs).ToString("N2") });
答案 5 :(得分:0)
试试这个:
Json(new { data = String.Format("{0.00}",Convert.ToDouble(hrs))});
答案 6 :(得分:0)
你也可以这样做:
return Json(new { data = Convert.ToDouble(hrs).ToString("#.00") });
答案 7 :(得分:0)
感谢您的所有投入,他们肯定帮助我们找到了以下解决方案:
Decimal.Parse(hrs.ToString()).ToString("N2")
高效的解决方案:
Convert.ToDecimal(hrs).ToString("N2")