以字符串格式
拆分为其Whole和Fractional部分(也以字符串形式输出)。注1:该数字的整个部分可能会变成大数(超过50个数字)。
] >>注2:输出结果(Whole和Fraction字符串)将不会转换为整数或浮点数,但由于Java语言会舍入较大的数字,因此只能将其进一步处理为字符串。因此,返回数字不在此处]
因为该功能自动检测到机器的语言环境,所以期望用户在其本地机器的语言环境中输入(传递)数字否则,该数字将以编程方式生成并传递给功能。
由于数字的长度很大,并且由于没有处理以指数(e)格式传递的数字,因此期望将数字作为“字符串”传递。该函数使用toLocaleString()来检测小数点和千位分隔符。
到目前为止,我已经用主数系统(。,'空格)测试了功能,到目前为止很好。
问题是,
该代码的安全性如何
,是否还有其他更好,更安全的方法来进行更改或需要进行更正/更改?谢谢 function splitFloatString(NumString) {
var decimalSeparator = (1.1).toLocaleString().substring(1,2); // Get Decimal Separator
var thousandSeparator = (1000).toLocaleString().substring(1,2); // Get Thousands Separator
NumString += ""; // ensure a string
var fraction ="0"; // default no fractional part
NumString = NumString.replace(RegExp("\\"+thousandSeparator,"g"),""); //remove thousand separators if any
if (RegExp("\\"+decimalSeparator,"g").test(NumString)) { // test for decimal separator
var n = NumString.split(decimalSeparator); // Split at Decimal Seprator
NumString = n[0]; // The Whole part
if (n.length==2) fraction = n[1]; // The Fractional part
if (fraction=="") fraction ="0";
}
console.log("Whole: ("+NumString+"), Fraction: ("+fraction+")"); // added for testing
//return n=[NumString,fraction]; // normal return uncomment
}
//------------------------------------------------------------------------------------
// Tests assuming user's machine and user enters/passes US-EN separators as an example
//------------------------------------------------------------------------------------
splitFloatString("123456789123456699999887788812340786.45678907656912574321115194123123456789");
splitFloatString("1,234,567,891,234,566,999,998,888,812,340.456520754186789075194123123456789");
splitFloatString("200")
splitFloatString("0.")
splitFloatString(123456.2349999)
splitFloatString("")
splitFloatString()
我开发了以下简短函数,用于将以字符串格式传递给它的数字分成整数和小数部分(也输出为字符串)。注1:数字的全部...
function getLocaleSeparators() {
const testNumber = 1000.1.toLocaleString()
return [testNumber.substring(1,2), testNumber.substring(5,6)]
}
function splitFloatString(number) {
const numberString = number.toString()
const [thousandSeparator, decimalSeparator] = getLocaleSeparators()
const [wholePart, fractionPart] = numberString.replace(new RegExp(thousandSeparator, 'g'), '').split(decimalSeparator)
console.log(`Whole: ${wholePart}, Fraction: ${fractionPart}`);
}