2017-03-12 4 views
0

私は解決するために簡単な問題を抱えていますが、変数にはdoubleが含まれています。私は2つの数値を合計し、結果を画面に出力する必要があります。私が働いている他の言語では、たとえそれが整数であっても、それが2倍であったという事実が10進数で印刷されるという結果になりました。 Javascriptでは、これは当てはまりません。丸めを行わずにJavascriptで整数を小数点として出力する

var d = 2.0; 
console.log(d) // out is 2 

私はtoFixed()を使用して小数点以下を印刷するには、それを強制することができますが、他の入力の結果を丸めるために起こっています。結果が2.0の場合は「2.0」、結果が2.345の場合は「2.345」を出力します。

私が今持っている解決策は、それが全体の数である場合、文字列に変換することです:

var d2 = 4.0 
console.log((d2 % 1 == 0) ? d2+".0" : d2) // out is 4.0 

これを行うには、いくつかのより良い方法がなければならないように私は感じます。これは私には非常にclunkyようです。私は解決策を探してきましたが、私が今までに見つけたものはすべてtoFixed()またはその他の丸めを使用しています。

+0

JavaScriptには1つのタイプの番号しかないため、すべてがダブルです。それが整数であるかどうかは気にしません。手動で書式を設定する必要があります。 – Tashi

+0

JavaScriptには、10進数または2倍のようなものはありません。すべてが数字です。これはかなり混乱します(ほとんどの言語とは異なります)。 – dirkk

答えて

1

私はより多くの数-yのソリューションは、可能性を考える:あなたは、小数点以下の桁数を決定する必要があり

var d = 2.0; 
var parsD = parseFloat(d); //you have to parse d either as Float or Integer 
console.log(parsD) // out will be in decimal without rounding up 

var d = 4.0 
var ds = Number.isInteger(d) ? d.toPrecision(2) : d.toString(); 
console.log(ds) 
+1

FYI - [polyfill](https://developer.mozilla.org/en-US/docs/Web/JavaScript/)が必要ですInternet Explorerをサポートしたい場合は、「Number.isInteger」のReference/Global_Objects/Number/isInteger#Polyfill) - –

0

はこれを試してみてください。現実的である。例えば財務問題の場合、小数点以下2桁はOKです。その場合は、行2を次のように変更してください。

var parsD = parseFloat(d).toFixed(n) //where n is an integer & number of decimals 

これは問題なく動作します。 私の場合は、フォームに入力を受け取ります。入力は整数または小数です。しかし、処理するときは、すべての入力が10進数として扱われます。

+0

これは動作しません。出力は2.0ではなく2です。 – RaneWrites

関連する問題