回答:
使用Math.floor()
はこれを行う1つの方法です。
詳細:https : //developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Math/floor
負の無限大に向かって丸める- Math.floor()
+3.5 => +3.0
-3.5 => -4.0
ゼロへの丸め(通常はと呼ばTruncate()
れますが、JavaScriptではサポートされていません)はMath.ceil()
、負の数とMath.floor()
正の数に使用することでエミュレートできます。
+3.5 => +3.0 using Math.floor()
-3.5 => -3.0 using Math.ceil()
x | 0
。
Math.floor()
OR
動作しますが、ビット単位の演算を使用する場合と比較すると非常に遅くなります。
var rounded = 34.923 | 0;
alert( rounded );
//alerts "34"
EDIT Math.floor()
は、|を使用するよりも遅くはありません。オペレーター。私の仕事をチェックしてくれたJason Sに感謝します。
テストに使用したコードは次のとおりです。
var a = [];
var time = new Date().getTime();
for( i = 0; i < 100000; i++ ) {
//a.push( Math.random() * 100000 | 0 );
a.push( Math.floor( Math.random() * 100000 ) );
}
var elapsed = new Date().getTime() - time;
alert( "elapsed time: " + elapsed );
特定の小数点以下の桁数に切り捨てる必要がある場合は、この関数を使用してみることができます
function roundDown(number, decimals) {
decimals = decimals || 0;
return ( Math.floor( number * Math.pow(10, decimals) ) / Math.pow(10, decimals) );
}
例
alert(roundDown(999.999999)); // 999
alert(roundDown(999.999999, 3)); // 999.999
alert(roundDown(999.999999, -1)); // 990
丸めnumber
に向かって0
、その署名された小数部を減算することによって行うことができますnumber % 1
。
rounded = number - number % 1;
同様にMath.floor
(向けたラウンド-Infinity
)このメソッドは、完全に正確です。
取り扱いに違いがあり-0
、+Infinity
と-Infinity
いえは:
Math.floor(-0) => -0
-0 - -0 % 1 => +0
Math.floor(Infinity) => Infinity
Infinity - Infinity % 1 => NaN
Math.floor(-Infinity) => -Infinity
-Infinity - -Infinity % 1 => NaN
Math.floor(1+7/8)
今日誰か他の人のコードをいじっていると、以下も切り捨てられているようです:
var dec = 12.3453465,
int = dec >> 0; // returns 12
符号伝播右シフト(>>)の詳細については、MDNビット演算子を参照してください。
これが何をしているかを理解するのにしばらく時間がかかりました:D
しかし、上記で強調したように、Math.floor()は機能し、私の意見ではより読みやすく見えます。
半分を切り捨てるには-1を配置し、その後、下の例のように-1を掛けます。
<script type="text/javascript">
function roundNumber(number, precision, isDown) {
var factor = Math.pow(10, precision);
var tempNumber = number * factor;
var roundedTempNumber = 0;
if (isDown) {
tempNumber = -tempNumber;
roundedTempNumber = Math.round(tempNumber) * -1;
} else {
roundedTempNumber = Math.round(tempNumber);
}
return roundedTempNumber / factor;
}
</script>
<div class="col-sm-12">
<p>Round number 1.25 down: <script>document.write(roundNumber(1.25, 1, true));</script>
</p>
<p>Round number 1.25 up: <script>document.write(roundNumber(1.25, 1, false));</script></p>
</div>
以下は、簡単な例で使用されているmath.floorです。これは、新しい開発者が関数でそれを使用する方法とその機能を理解するのに役立つ場合があります。それが役に立てば幸い!
<script>
var marks = 0;
function getRandomNumbers(){ // generate a random number between 1 & 10
var number = Math.floor((Math.random() * 10) + 1);
return number;
}
function getNew(){
/*
This function can create a new problem by generating two random numbers. When the page is loading as the first time, this function is executed with the onload event and the onclick event of "new" button.
*/
document.getElementById("ans").focus();
var num1 = getRandomNumbers();
var num2 = getRandomNumbers();
document.getElementById("num1").value = num1;
document.getElementById("num2").value = num2;
document.getElementById("ans").value ="";
document.getElementById("resultBox").style.backgroundColor = "maroon"
document.getElementById("resultBox").innerHTML = "***"
}
function checkAns(){
/*
After entering the answer, the entered answer will be compared with the correct answer.
If the answer is correct, the text of the result box should be "Correct" with a green background and 10 marks should be added to the total marks.
If the answer is incorrect, the text of the result box should be "Incorrect" with a red background and 3 marks should be deducted from the total.
The updated total marks should be always displayed at the total marks box.
*/
var num1 = eval(document.getElementById("num1").value);
var num2 = eval(document.getElementById("num2").value);
var answer = eval(document.getElementById("ans").value);
if(answer==(num1+num2)){
marks = marks + 10;
document.getElementById("resultBox").innerHTML = "Correct";
document.getElementById("resultBox").style.backgroundColor = "green";
document.getElementById("totalMarks").innerHTML= "Total marks : " + marks;
}
else{
marks = marks - 3;
document.getElementById("resultBox").innerHTML = "Wrong";
document.getElementById("resultBox").style.backgroundColor = "red";
document.getElementById("totalMarks").innerHTML = "Total Marks: " + marks ;
}
}
</script>
</head>
<body onLoad="getNew()">
<div class="container">
<h1>Let's add numbers</h1>
<div class="sum">
<input id="num1" type="text" readonly> + <input id="num2" type="text" readonly>
</div>
<h2>Enter the answer below and click 'Check'</h2>
<div class="answer">
<input id="ans" type="text" value="">
</div>
<input id="btnchk" onClick="checkAns()" type="button" value="Check" >
<div id="resultBox">***</div>
<input id="btnnew" onClick="getNew()" type="button" value="New">
<div id="totalMarks">Total marks : 0</div>
</div>
</body>
</html>