ASP.NET MVC制作柱状图时整数变量转百分比问题咨询
问题核心错误点
- 语法逻辑错误:运算优先级导致你先执行了
100.ToString("0.00%")得到字符串类型结果,整数无法和字符串做除法运算,直接触发语法报错。 - 类型定义错误:百分比格式化后的结果是字符串类型,你用
int y2根本无法存储格式化后的内容。 - 运算精度错误:两个整数直接做除法会自动取整,比如23/100运算结果为0,无法得到正确的百分比小数基数。
修正方案
首先调整BarChartSourceData_Product_Records_Data_View类的构造函数,将第三个参数的类型从int改为string,再修改代码逻辑:
string x1 = var_Product_name; int y1 = Tools.ConvertToInt_02(var_Amount); // 100m标记为decimal类型,避免整数除法精度丢失,再格式化百分比 string y2 = (Tools.ConvertToInt_02(var_Amount) / 100m).ToString("0.00%"); BarChartData_Product_Records_Data_View.Add(new BarChartSourceData_Product_Records_Data_View(x1, y1, y2));
额外说明
如果你计算百分比的基数不是固定100,是对应总量的占比,把代码中的100m替换为对应总数值的decimal类型变量即可。如果你的柱状图组件支持数值自动格式化,也可以直接传入decimal类型的占比数值,在组件的系列配置项中设置百分比格式,不需要提前转字符串。
内容的提问来源于stack exchange,提问作者boredeggyolk
相关产品推荐
相关产品推荐

