2017-08-02 20 views
3
var number = 0.08; 
var newNumber = Math.round(number * 4)/4 //round to nearest .25 

上記のコードでは、最も近い0.25に丸めることができます。しかし、私はそれを丸めるだけです。そこで:数学ラウンドのみの四半期

0.08 = 0.25 
0.22 = 0.25 
0.25 = 0.25 
0.28 = 0.5 

これはどのように可能ですか?

+0

あなたは最大2DPの数字しか扱えませんか? – Toastrackenigma

答えて

6

あなたが効果的にしたいことは、入力の上限を取ることですが、整数で操作するのではなく、四半期で操作したいと考えています。ここで使用できるトリックの1つは、入力を4で乗算して整数にし、JavaScriptのMath.ceil()関数に従わせることです。最後に、その結​​果を4で割って論理的に元の状態に戻します。

使用この式:ここ

Math.ceil(4 * num)/4 

デモ:

Rextester

0

ユーザー数を切り上げするMath.ceil()機能。

Math.floor() - 切り捨てます。

var number = 0.08; 
var newNumber = Math.ceil($scope.newAmt * 4)/4 //round to nearest .25 
1

あなたたちMath.ceil()にしたいことがあります。

ceil()上方数ラウンドその最も近い整数に。

console.log(Math.ceil(0.08 * 4)/4); // 0.25 
 
console.log(Math.ceil(0.22 * 4)/4); // 0.25 
 
console.log(Math.ceil(0.25 * 4)/4); // 0.25 
 
console.log(Math.ceil(0.28 * 4)/4); // 0.5

1

ティムBiegeleisenは間違いなく最高の答えを持っていますが、あなたはより「簡単な」アプローチをしたい場合は、基本的には、何か自分自身の関数を書くことができます。

var round = (num) => { 
    if (num <= 0.25) { 
     return 0.25; 
    } else if (num > 0.25 && num <= 0.5) { 
     return 0.5; 
    } else if (num > 0.5 && num <= 0.75) { 
     return 0.75; 
    } else if (num > 0.75 && num <= 1.0) { 
     return 1.0; 
    } else { 
     return null; 
    } 
}; 

これを呼び出すと、必要な結果が再現されます。

round(0.08); // 0.25 
round(0.22); // 0.25 
round(0.25); // 0.25 
round(0.28); // 0.5 
+0

私の名前のスペルが間違っていますが、これはアップヴォートに値する+1 –

+0

謝罪、それを修正:) –

0

大きな問題は、あなたは、これは常にラウンド、我々はそれを知っているように丸めの標準的な方法に基づきます

Math.round($scope.newAmt * 4)/4 

を使用しています。

Math.ceil($scope.newAmt * 4)/4 

これは常に丸めます。下り坂の兄弟は

Math.floor() 

途中です。

関連する問題