次のコードがあります。price_resultが整数、たとえば10と等しい場合、小数点以下2桁を追加したいと思います。したがって、10は10.00になります。または、10.6の場合は10.60になります。これを行う方法がわかりません。
price_result = parseFloat(test_var.split('$')[1].slice(0,-1));
次のコードがあります。price_resultが整数、たとえば10と等しい場合、小数点以下2桁を追加したいと思います。したがって、10は10.00になります。または、10.6の場合は10.60になります。これを行う方法がわかりません。
price_result = parseFloat(test_var.split('$')[1].slice(0,-1));
回答:
あなたはそれをするために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))
エラーが発生します。
解析が目的であり、入力がリテラルである可能性がある場合は、を期待し、float
それtoFixed
を提供しないため、これを提供する2つの単純な関数を次に示します。
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
@sdの 短い回答: JSでは、10進数の後に後続ゼロがあるNumberデータ型の値を持つ方法はありません。
長い答え:文字列を返すには、JavaScriptのプロパティtoFixed
またはtoPrecision
関数です。この理由は、数値データ型はa = 2.00のような値を持つことができないため、小数点以下の後続ゼロは常に削除されます。これは数値データ型の組み込みプロパティです。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の数値に対してのようなメソッドはありません。本当の問題は、誰がこれに賛成したかです。