要求在y坐标上显示单位,单位范围为万 (104 ) 、亿(109)、兆(1012)、京(1016),以及到负数。
正数比较好判断,直接比较大小,最后将结果除以对应的单位范围即可;
例如:
//传入值value
if (value >= Math.pow(10, 16) && value < Math.pow(10, 20)) {
return (value / Math.pow(10, 16)) + "京";
} else if (value >= Math.pow(10, 12) && value < Math.pow(10, 16)) {
return (value / Math.pow(10, 12)) + "兆";
} else if (value >= Math.pow(10, 8) && value < Math.pow(10, 12)) {
return (value / Math.pow(10, 8)) + "亿"
} else if (value >= Math.pow(10, 4) && value < Math.pow(10, 8)) {
return (value / Math.pow(10, 4)) + "万"
} else { //在小的数就不加单位直接显示数字了
return value
}
上面的方式只能展示出正数,没法展示负数。
那么负数该怎么展示和比较呢,其实很简单,在展示数据最前面加个符号位,并且加个判断,如果传入的value是负数,则将value取绝对值,并且将其符号位变为 “ - ”即可,如下:
char minusSign ='';
if(value<0){
value = Math.abs(value)
minusSign = '-'
}
if (value >= Math.pow(10, 16) && value < Math.pow(10, 20)) {
return minusSign + (value / Math.pow(10, 16)) + "京";
} else if (value >= Math.pow(10, 12) && value < Math.pow(10, 16)) {
return minusSign + (value / Math.pow(10, 12)) + "兆";
} else if (value >= Math.pow(10, 8) && value < Math.pow(10, 12)) {
return minusSign + (value / Math.pow(10, 8)) + "亿";
} else if (value >= Math.pow(10, 4) && value < Math.pow(10, 8)) {
return minusSign + (value / Math.pow(10, 4)) + "万"
} else {
return minusSign + value
}