为什么我不能把这个换成双
本文关键字:不能 为什么 | 更新日期: 2023-09-27 18:24:33
如何在数字后显示两个小数点?
我尝试过以下内容:
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("#.##")
,它不会在UI上显示任何内容——它显示小时"9"
我们如何格式化通过查询上述数据库得到的结果?
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") });
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")) });
使用ToDouble(hrs).ToString("f2")
查询的结果不是单个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") });
尝试:
Json(new { data = Convert.ToDouble(hrs).ToString("N2") });
试试这个:
Json(new { data = String.Format("{0.00}",Convert.ToDouble(hrs))});
您还可以执行:
return Json(new { data = Convert.ToDouble(hrs).ToString("#.00") });
感谢您的所有投入,他们无疑有助于整合以下解决方案:
Decimal.Parse(hrs.ToString()).ToString("N2")
高效解决方案:
Convert.ToDecimal(hrs).ToString("N2")