vue的一张echarts环形图,当数据全部为0的时候,算出来的百分比不是0%而是NaN%,怎么样让它变成0%?
async ShorepowermaintainStatistics() {
let res = await shorepowermaintainStatistics(this.listQuery);
if (res.code === "0") {
const total = res.data.neiHe + res.data.yanJiang + res.data.yanHai;
var option1 = {
title: {
text: `设备总数:${total}台`,
textStyle: {
color: "#00FFFF",
fontSize: "14px",
},
right: 0,
top: 15,
},
legend: {
right: 0,
top: "center",
orient: "",
icon: "circle",
textStyle: {
color: "white",
},
formatter: function (name) {
var data = option1.series.data;
var total = 0;
var tarValue;
for (var i = 0, l = data.length; i < l; i++) {
total += data[i].value;
if (data[i].name == name) {
tarValue = data[i].value;
}
}
var p = ((tarValue / total) * 100).toFixed(1);
return name + " " + " | " + " " + " " + p + "% " + tarValue;
},
},
tooltip: {},
series: {
name: "",
type: "pie",
radius: ["40%", "90%"],
center: ["30%", "55%"],
//roseType: "area",
label: {
show: false,
},
color: ["#0EBB5B", "#F19149", "#A0A0A0"],
data: [
{ value: res.data.neiHe, name: "内河" },
{ value: res.data.yanJiang, name: "沿江" },
{ value: res.data.yanHai, name: "沿海" },
],
},
};
var p = ((Number(tarValue) /Number(total)) * 100).toFixed(1);
因为 需要转换 一下 转成数字
两个都为0的情况下就加个判断吧
if(p=="NaN"){
p=0
}
以下三个会出的结果
console.log(0/0) NaN
console.log(0/1) 0
console.log(1/0) Infinity
对结果做一下判断,如果是NaN或者undefined,则默认为0
var res = tarValue / total
console.log("res", res)
var p = ((isNaN(res) || res == undefined ? 0 : res) * 100).toFixed(1)
var p = total ==0?0:((tarValue / total) * 100).toFixed(1);