修订大数字的程序转换方式

This commit is contained in:
枫谷剑仙 2023-09-04 20:25:21 +08:00
parent 907dda197b
commit 003aa52781
7 changed files with 37 additions and 149 deletions

View File

@ -1,31 +1,3 @@
//const _localTranslating = {}; //const _localTranslating = {};
//deepMerge(localTranslating, _localTranslating); //deepMerge(localTranslating, _localTranslating);
localisation(localTranslating); localisation(localTranslating);
//大数字缩短长度
Number.prototype.bigNumberToString = function() {
const negative = this < 0;
let numTemp = negative ? Math.abs(this) : this.valueOf();
if (!numTemp) return "0";
if (numTemp == Infinity) return "Infinity";
const grouping = 1e3;
const unit = ['', 'K', 'M', 'G', 'T', 'P'];
const numParts = [];
do {
numParts.push(numTemp % grouping);
numTemp = Math.floor(numTemp / grouping);
} while (numTemp > 0 && numParts.length < (unit.length - 1))
if (numTemp > 0) {
numParts.push(numTemp);
}
let numPartsStr = numParts.map((num, idx) => {
if (num > 0) {
return num + unit[idx];
} else
return "";
});
let outStr = numPartsStr.filter(Boolean).reverse().join(" ");
return (negative ? "-" : "") + outStr;
}

View File

@ -56,32 +56,4 @@ deepMerge(localTranslating, _localTranslating);
localisation(localTranslating); localisation(localTranslating);
//大数字缩短长度 //大数字缩短长度
Number.prototype.bigNumberToString = function() Number.prototype.bigNumberToString = BigNumberToStringLocalise(['', '万', '億', '兆', '京', '垓', '𥝱', '穣', '溝', '澗', '正', '載', '極', '恒河沙', '阿僧祇', '那由他', '不可思議', '無量大数'], 4);
{
let numTemp = this.valueOf();
if (!numTemp) return "0";
const grouping = Math.pow(10, 4);
const unit = ['','万','億','兆','京','垓'];
const numParts = [];
do{
numParts.push(numTemp % grouping);
numTemp = Math.floor(numTemp / grouping);
}while(numTemp>0 && numParts.length<(unit.length-1))
if (numTemp>0)
{
numParts.push(numTemp);
}
let numPartsStr = numParts.map((num,idx)=>{
if (num > 0)
{
return (num < 1e3 ? "と" : "") + num.toLocaleString() + unit[idx];
}else
return "と";
});
numPartsStr.reverse(); //反向
let outStr = numPartsStr.join("");
outStr = outStr.replace(/(^と+|と+$)/g,''); //去除开头的零
outStr = outStr.replace(/と{2,}/g,'と'); //去除多个连续的零
return outStr;
}

View File

@ -56,32 +56,4 @@ deepMerge(localTranslating, _localTranslating);
localisation(localTranslating); localisation(localTranslating);
//大数字缩短长度 //大数字缩短长度
Number.prototype.bigNumberToString = function() Number.prototype.bigNumberToString = BigNumberToStringLocalise(['', '만', '억', '조', '경', '해', '자', '양', '구', '간', '정', '재', '극', '항하사', '아승기', '나유타', '불가사의', '무량대수'], 4);
{
let numTemp = this.valueOf();
if (!numTemp) return "0";
const grouping = Math.pow(10, 4);
const unit = ['','만','억','조'];
const numParts = [];
do{
numParts.push(numTemp % grouping);
numTemp = Math.floor(numTemp / grouping);
}while(numTemp>0 && numParts.length<(unit.length-1))
if (numTemp>0)
{
numParts.push(numTemp);
}
let numPartsStr = numParts.map((num,idx)=>{
if (num > 0)
{
return (num < 1e3 ? "と" : "") + num.toLocaleString() + unit[idx];
}else
return "と";
});
numPartsStr.reverse(); //反向
let outStr = numPartsStr.join("");
outStr = outStr.replace(/(^と+|と+$)/g,''); //去除开头的零
outStr = outStr.replace(/と{2,}/g,'と'); //去除多个连续的零
return outStr;
}

View File

@ -446,32 +446,4 @@ deepMerge(localTranslating, _localTranslating);
localisation(localTranslating); localisation(localTranslating);
//大數字縮短長度 //大數字縮短長度
Number.prototype.bigNumberToString = function() { Number.prototype.bigNumberToString = BigNumberToStringLocalise(['', '萬', '億', '兆', '京', '垓', '秭', '穰', '溝', '澗', '正', '載'], 4);
const negative = this < 0;
let numTemp = negative ? Math.abs(this) : this.valueOf();
if (!numTemp) return "0";
if (numTemp == Infinity) return "無窮大";
const grouping = 1e4;
const unit = ['','萬','億','兆','京','垓'];
const numParts = [];
do {
numParts.push(numTemp % grouping);
numTemp = Math.floor(numTemp / grouping);
} while (numTemp > 0 && numParts.length < (unit.length - 1))
if (numTemp > 0) {
numParts.push(numTemp);
}
let numPartsStr = numParts.map((num, idx) => {
if (num > 0) {
return (num < 1e3 ? "零" : "") + num + unit[idx];
} else
return "零";
});
numPartsStr.reverse(); //反向
let outStr = numPartsStr.join("");
outStr = outStr.replace(/(^零+|零+$)/g, ''); //去除开头的零
outStr = outStr.replace(/零{2,}/g, '零'); //去除多个连续的零
return (negative ? "-" : "") + outStr;
}

View File

@ -446,32 +446,4 @@ deepMerge(localTranslating, _localTranslating);
localisation(localTranslating); localisation(localTranslating);
//大数字缩短长度 //大数字缩短长度
Number.prototype.bigNumberToString = function() { Number.prototype.bigNumberToString = BigNumberToStringLocalise(['', '万', '亿', '万亿', '亿亿', '万亿亿', '亿亿亿', '万亿亿亿', '亿亿亿亿'], 4);
const negative = this < 0;
let numTemp = negative ? Math.abs(this) : this.valueOf();
if (!numTemp) return "0";
if (numTemp == Infinity) return "无穷大";
const grouping = 1e4;
const unit = ['', '万', '亿', '兆', '京', '垓'];
const numParts = [];
do {
numParts.push(numTemp % grouping);
numTemp = Math.floor(numTemp / grouping);
} while (numTemp > 0 && numParts.length < (unit.length - 1))
if (numTemp > 0) {
numParts.push(numTemp);
}
let numPartsStr = numParts.map((num, idx) => {
if (num > 0) {
return (num < 1e3 ? "零" : "") + num + unit[idx];
} else
return "零";
});
numPartsStr.reverse(); //反向
let outStr = numPartsStr.join("");
outStr = outStr.replace(/(^零+|零+$)/g, ''); //去除开头的零
outStr = outStr.replace(/零{2,}/g, '零'); //去除多个连续的零
return (negative ? "-" : "") + outStr;
}

View File

@ -176,8 +176,38 @@ Uint8Array.prototype.toHex = function() {
return [...this].map(n=>n.toString(16).padStart(2,'0')).join(''); return [...this].map(n=>n.toString(16).padStart(2,'0')).join('');
} }
//大数字缩短长度,默认返回本地定义字符串 //大数字缩短长度
Number.prototype.bigNumberToString = Number.prototype.toLocaleString; function BigNumberToStringLocalise(separators, splitDigits = 3 ) {
return function(){
if (splitDigits < 1) throw new Error('数字分割数量至少是1位');
if (Number.isNaN(this)) return 0..bigNumberToString();
if (this === Infinity || this === -Infinity) return this.toLocaleString();
const grouping = 10 ** splitDigits;
const numParts = [];
let numTemp = Math.abs(this);
do {
numParts.push(numTemp % grouping);
numTemp = Math.floor(numTemp / grouping);
} while (numTemp > 0 && numParts.length < (separators.length - 1))
if (numTemp > 0) {
numParts.push(numTemp);
}
let numPartsStr = numParts.map((num, idx) => {
if (num > 0) {
return num + separators[idx];
} else
return '';
});
numPartsStr.reverse(); //反向
let outStr = numPartsStr.join('');
const negative = this < 0;
return (negative ? "-" : "") + outStr;
}
}
Number.prototype.bigNumberToString = BigNumberToStringLocalise(['', 'K ', 'M ', 'G ', 'T ', 'P ', 'E ', 'Z ', 'Y ', 'R ', 'Q '], 3);
//最多保留N位小数不留0 //最多保留N位小数不留0
Number.prototype.keepCounts = function(decimalDigits = 2, plusSign = false) Number.prototype.keepCounts = function(decimalDigits = 2, plusSign = false)
{ {
@ -1105,8 +1135,7 @@ function countTeamHp(team, leader1id, leader2id, solo, noAwoken = false) {
//演示用代码 //演示用代码
//console.log("%s 第1次倍率血量%s第2次倍率血量%s",Cards[m.id].otLangName["chs"],hp1,hp2); //console.log("%s 第1次倍率血量%s第2次倍率血量%s",Cards[m.id].otLangName["chs"],hp1,hp2);
console.debug(hp, mulHP);
return Math.round(mulHP); return Math.round(mulHP);
}); });

View File

@ -6179,7 +6179,6 @@ function refreshTeamTotalHP(totalDom, team, teamIdx) {
badgeHPScale = 1.10; badgeHPScale = 1.10;
} }
console.debug(teamHPArr, tHP, teamHPAwoken, badgeHPScale);
tHP = Math.round(tHP * (1 + 0.05 * teamHPAwoken) * badgeHPScale); tHP = Math.round(tHP * (1 + 0.05 * teamHPAwoken) * badgeHPScale);
tHPNoAwoken = Math.round(tHPNoAwoken * badgeHPScale); tHPNoAwoken = Math.round(tHPNoAwoken * badgeHPScale);