如果它在',00'结束,我想在价格后删除小数。如果它以任何其他结束它应该保留。我必须能够看到价格结束这样做,但我如何在Javascript中实现这一目标?
我的想法是检查价格是否在00结束并在if语句中删除它。
function gformFormatMoney(text, isNumeric){
if(!gf_global.gf_currency_config)
return text;
var currency = new Currency(gf_global.gf_currency_config);
var unformatted = currency.toMoney(text, isNumeric);
var formatted;
var formatting = unformatted%10;
if(formatting == 00) {
}
return unformatted;
}
^这会产生错误'不允许使用前缀为0的Octal litterals'
您需要将数字解析为浮点数,将其修改为2位小数(在所有情况下),并删除(.00)
的所有匹配项。像这样的东西可以工作:
function fixFloat(num){
return parseFloat(num).toFixed(2).replace('.00', '');
}
console.log(fixFloat(20.00));
console.log(fixFloat(40.40));
console.log(fixFloat(30.01));
请注意,这将返回一个字符串。如果您希望将其转换回数字,则需要再次解析它。
如果数据类型不是字符串,则将删除小数后的尾随零。如果是字符串,请使用parseInt
转换为数字
let price = 20.00;
console.log(price)
let price1 = '40.00'
console.log(parseInt(price1, 10))
let price2 = '40.00'
console.log(parseFloat(price2, 10))
你应该使用toFixed。
至于:
let num = 50.00;
num.toFixed(2).includes('.00') ? num.toFixed() :num.toFixed(2);
原来它不是一个整数,而是一个字符串。
我通过这样做来修复它:
function gformFormatMoney(text, isNumeric){
if(!gf_global.gf_currency_config)
return text;
var currency = new Currency(gf_global.gf_currency_config);
var unformatted = currency.toMoney(text, isNumeric);
var formatted = unformatted.replace(',00', '');
return formatted;
}