Answers:
您可以使用toFixed()来做到这一点
var twoPlacedFloat = parseFloat(yourString).toFixed(2)
var twoPlacedFloat = + parseFloat(yourString).toFixed(2)
转换为浮动
使用时toFixed
,它始终以字符串形式返回值。这有时会使代码复杂化。为避免这种情况,可以为Number设置另一种方法。
Number.prototype.round = function(p) {
p = p || 10;
return parseFloat( this.toFixed(p) );
};
并使用:
var n = 22 / 7; // 3.142857142857143
n.round(3); // 3.143
或者简单地:
(22/7).round(3); // 3.143
0.1 + 0.2 // 0.30000000000000004
所以我需要对此进行更正(0.1+0.2).round() // 0.3
如果您需要性能(例如在游戏中):
Math.round(number * 100) / 100
大约是parseFloat(number.toFixed(2))的100倍
number * 1
我不容易遗漏某些东西🤔?
要返回数字,请添加另一层括号。保持清洁。
var twoPlacedFloat = parseFloat((10.02745).toFixed(2));
var twoPlacedFloat = parseFloat(('2.00').toFixed(2))
产生错误。
如果您的目标是解析,并且您的输入可能是文字,那么您会期望a float
并且toFixed
不会提供它,因此这里有两个简单的函数可以提供此功能:
function parseFloat2Decimals(value) {
return parseFloat(parseFloat(value).toFixed(2));
}
function parseFloat2Decimals(value,decimalPlaces) {
return parseFloat(parseFloat(value).toFixed(decimalPlaces));
}
parseFloat(parseFloat('10.5').toFixed(2))
回报。还要返回10.5
10.50
parseFloat(parseFloat('10.50').toFixed(2))
10.5
来自lodash的ceil可能是最好的
_.ceil("315.9250488",2)
_.ceil(315.9250488,2)
_.ceil(undefined,2)
_.ceil(null,2)
_.ceil("",2)
也可以与数字一起使用,这是安全的
@sd 简短答案: JS中没有办法让Number数据类型的值在小数点后尾随零。
长答案:它是JavaScript 的属性toFixed
或toPrecision
函数,返回String。原因是Number数据类型不能具有a = 2.00之类的值,它将始终删除小数点后的尾随零。这是Number数据类型的内置属性。因此,要在JS中实现上述目标,我们有2个选择
试试看(请参见代码中的注释):
function fixInteger(el) {
// this is element's value selector, you should use your own
value = $(el).val();
if (value == '') {
value = 0;
}
newValue = parseInt(value);
// if new value is Nan (when input is a string with no integers in it)
if (isNaN(newValue)) {
value = 0;
newValue = parseInt(value);
}
// apply new value to element
$(el).val(newValue);
}
function fixPrice(el) {
// this is element's value selector, you should use your own
value = $(el).val();
if (value == '') {
value = 0;
}
newValue = parseFloat(value.replace(',', '.')).toFixed(2);
// if new value is Nan (when input is a string with no integers in it)
if (isNaN(newValue)) {
value = 0;
newValue = parseFloat(value).toFixed(2);
}
// apply new value to element
$(el).val(newValue);
}
简单的JavaScript,要浮动的字符串:
var it_price = chief_double($("#ContentPlaceHolder1_txt_it_price").val());
function chief_double(num){
var n = parseFloat(num);
if (isNaN(n)) {
return "0";
}
else {
return parseFloat(num);
}
}
适用于我的解决方案如下
parseFloat(value)
Solution for FormArray controllers
初始化FormArray表单生成器
formInitilize() {
this.Form = this._formBuilder.group({
formArray: this._formBuilder.array([this.createForm()])
});
}
建立表格
createForm() {
return (this.Form = this._formBuilder.group({
convertodecimal: ['']
}));
}
将表单值设置到表单控制器中
setFormvalues() {
this.Form.setControl('formArray', this._formBuilder.array([]));
const control = <FormArray>this.resourceBalanceForm.controls['formArray'];
this.ListArrayValues.forEach((x) => {
control.push(this.buildForm(x));
});
}
private buildForm(x): FormGroup {
const bindvalues= this._formBuilder.group({
convertodecimal: x.ArrayCollection1? parseFloat(x.ArrayCollection1[0].name).toFixed(2) : '' // Option for array collection
// convertodecimal: x.number.toFixed(2) --- option for two decimal value
});
return bindvalues;
}
我还有其他解决方案。
您可以用来round()
代替toFixed()
var twoPlacedFloat = parseFloat(yourString).round(2)
parseFloat()
因为我已经更新了@zsalzbank的答案
round()
js中的数字这样的方法。真正的问题是谁对此表示支持。