gpt4 book ai didi

javascript - 如果字符串值包含浮点解析并格式化它,否则返回字符串

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:29:45 26 4
gpt4 key购买 nike

我正在使用一个 API,它在响应中只返回字符串。我需要将字符串中返回的任何十进制值格式化为具有前导零但没有尾随零。如果该值不是字符串中的 float ,则应在不进行任何格式更改的情况下返回它。

示例:如果值为“.7”、“.70”或“0.70”,我的函数将始终返回“0.7”。如果值为“1+”,它将返回“1+”。

最初我以为 API 返回的是 float ,所以我在下面这样做。 places 参数是要显示多少个小数位。

function setDecimalPlace(input, places) {
if (isNaN(input)) return input;
var factor = "1" + Array(+(places > 0 && places + 1)).join("0");

return Math.round(input * factor) / factor;
};

当值为十进制字符串时,如何完成上述函数的功能,但如果字符串不包含 float ,则只返回输入的值?顺便说一句,我使用的是 Angular,最终会将它变成一个过滤器。

最佳答案

更新#2

同样来自 https://stackoverflow.com/a/3886106/4640499

function isInt(n) {
return n % 1 === 0;
}

所以最后你可以检查 isFloat 然后 isInt 然后断定它是一个字符串。

如您所说(评论)在“7.0”的情况下:

var v = '7.0';
var formatted = (isFloat(v) || isInt(parseFloat(v))) ? parseFloat(v) : v;

更新

实际上,不需要numberFormat函数:

var v = '.7';
if(isFloat(v)) var formatted = parseFloat(v);

采用这些函数:

function isFloat(n) {
n = parseFloat(n);
// from https://stackoverflow.com/a/3886106/4640499
return n === Number(n) && n % 1 !== 0;
}
function numberFormat(e, t, n, o) {
// from http://phpjs.org/functions/number_format/
var r = e,
u = isNaN(t = Math.abs(t)) ? 2 : t,
c = void 0 == n ? '.' : n,
a = void 0 == o ? ',' : o,
l = 0 > r ? '-' : '',
d = parseInt(r = Math.abs(+r || 0).toFixed(u)) + '',
s = (s = d.length) > 3 ? s % 3 : 0
;
return l + (s ? d.substr(0, s) + a : '') +
d.substr(s).replace(/(\d{3})(?=\d)/g, '$1' + a) +
(u ? c + Math.abs(r - d).toFixed(u).slice(2) : '');
}
function formatFloat(e) {
return numberFormat(e, 1);
}

然后:

var v = '.7';
console.info(isFloat(v));
console.info(formatFloat(v));

if(isFloat(v)) formatFloat(v);

关于javascript - 如果字符串值包含浮点解析并格式化它,否则返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33741681/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com