답변:
모듈러스 를 사용 하면 효과가 있습니다.
num % 1 != 0
// 23 % 1 = 0
// 23.5 % 1 = 0.5
이는 형식에 관계없이 숫자의 숫자 값 을 기반으로 합니다. 고정 소수점이있는 정수를 포함하는 숫자 문자열을 정수와 동일하게 처리합니다.
'10.0' % 1; // returns 0
10 % 1; // returns 0
'10.5' % 1; // returns 0.5
10.5 % 1; // returns 0.5
20.0
문자열로 표현되지 않으면 프로그래밍 방식으로 소수점 이 있는지 말할 수 없습니다 . 또한, 다른 솔루션들 중 누구도 그 문제를 해결하지 않은 것에 대해 투표권을 얻지 못했습니다.
"10."
정수이며, 결과는 정확히 동일합니다 "10"
또는 10
.
Number.isInteger(23); // true
Number.isInteger(1.5); // false
Number.isInteger("x"); // false:
Number.isInteger () 는 ES6 표준의 일부이며 IE11에서는 지원되지 않습니다.
그것은에 대해 false를 반환 NaN
, Infinity
및 숫자가 아닌 인수하면서 x % 1 != 0
true를 반환합니다.
Number.isInteger(12.0)
을 반환합니다 true
.
Number.isInteger('1e3')
있다 false
하더라도, Number.isInteger(1e3)
사실이다. 질문의 의도가 (정수에 소수점이 실제로 존재하는 것이 아닌) 정수가 아닌 값을 찾는 것이라고 가정하면 문자열 값 '12 .0 ' 은 정수를 나타내는대로 전달 해야 하지만 다시 Number.isInteger('12.0')
is false
입니다.
number
가 전체인지 아닌지입니다. 입력이 문자열 인 경우 물론이 number
를 통해 첫 번째 로 변환해야합니다 parseFloat()
.
또는 이것을 사용하여 소수점이 아닌지 알아낼 수 있습니다.
string.indexOf(".") == -1;
yournumber.toString.indexOf(".")
가장 일반적인 해결책은 숫자의 정수 부분을 제거하고 다음과 같이 0과 비교하는 것입니다.
function Test()
{
var startVal = 123.456
alert( (startVal - Math.floor(startVal)) != 0 )
}
startVal != Math.floor(startVal)
?
Math.Floor
함수는 10 진수 값을 취하며 JavaScript에서 허용되는 최대 10 진수 값은 2^53 - 1
또는 9007199254740991
입니다. 이후 893144042145698745.3
이 최대 값보다 큰 경우, 함수는 실패 할 것이다.
간단하지만 효과적인!
Math.floor(number) === number;
Math.floor(3.0) == 3.0
사실, Math.floor(3.3) == 3.3
거짓입니다
// 바이트 화는 어떻습니까?
Number.prototype.isInt= function(){
return this== this>> 0;
}
나는 항상 자바 스크립트에서 비트 연산자에 대해 기분이 좋지 않습니다.
그들은 운동을 거의하지 않습니다.
>>
값을 부호있는 32 비트 정수 로 변환 하기 때문에 2 ^ 31-1보다 큰 정수의 경우 실패합니다 .
number = 20.5
if (number == Math.floor(number)) {
alert("Integer")
} else {
alert("Decimal")
}
꽤 시원하고 XX.0과 같은 것들에도 작동합니다! Math.floor ()는 소수가 있으면 소수점을 자르기 때문에 바닥이 원래 숫자와 다르면 소수임을 알 수 있습니다! 그리고 문자열 변환은 없습니다 :)
var re=/^-?[0-9]+$/;
var num=10;
re.test(num);
num= 999999999999999999999
.
function isDecimal(n){
if(n == "")
return false;
var strCheck = "0123456789";
var i;
for(i in n){
if(strCheck.indexOf(n[i]) == -1)
return false;
}
return true;
}
다음은 가드 라이브러리에서 발췌 한 내용입니다 (David Herman의 Effective JavaScript에서 영감을 얻음).
var guard = {
guard: function(x) {
if (!this.test(x)) {
throw new TypeError("expected " + this);
}
}
// ...
};
// ...
var number = Object.create(guard);
number.test = function(x) {
return typeof x === "number" || x instanceof Number;
};
number.toString = function() {
return "number";
};
var uint32 = Object.create(guard);
uint32.test = function(x) {
return typeof x === "number" && x === (x >>> 0);
};
uint32.toString = function() {
return "uint32";
};
var decimal = Object.create(guard);
decimal.test = function(x) {
return number.test(x) && !uint32.test(x);
};
decimal.toString = function() {
return "decimal";
};
uint32.guard(1234); // fine
uint32.guard(123.4); // TypeError: expected uint32
decimal.guard(1234); // TypeError: expected decimal
decimal.guard(123.4); // fine
function isWholeNumber(num) {
return num === Math.round(num);
}
다음 함수를 사용하여 숫자에 소수점 이하 자릿수가 있는지 확인할 수 있습니다.
function hasDecimal(num){
return !!(num % 1);
}
console.log(hasDecimal(2)); //false
console.log(hasDecimal(2.32423)); //true
따라서 일부 사용자는 설명을 원합니다. 조각으로 나눕니다 : (num % 1)
괄호는 해당 작업을 먼저 수행하는 것을 의미합니다. num-함수가 전달한 변수 %-왼쪽 숫자를 오른쪽으로 나누려고하는 계수 기호. 나머지가 있으면 소수로 반환합니다. 균등하게 나누면 0을 반환합니다.
따라서 지금까지 가지고있는 것을 요약하면 (num % 1)은 다음을 반환합니다.
균등하게 나눈 경우 0 또는 그렇지 않은 경우 #. #####
0 == 거짓.
[ANY_NUMBER_NOT_ZERO] == true.
예 : new Boolean (0)이 false 인 경우 new Boolean (12312.1231)이 true 인 경우
다른 대안 : 사용자가 (num % 1)의 값을 반환하려고 시도했을 수 있습니다. 기본적으로 동일한 결과를 얻을 수 있습니다. 리턴 (0)이 false이고 리턴 (1.213113)이 true이므로
그러나 부울 값을 반환하고 싶었습니다. 따라서 부울에 값을 강제로 넣는 바로 가기로! 그 전에 기호.
알고있는만큼.,! NOT을 의미합니다. 그러나 또한 값을 부울로 강제합니다.
이후! symobol은 값을 부울로 강제하고 그 값을 반대로합니다. 나는 사용한다 !! 값을 부울로 강제하고 값을 원래 부울 값으로 되돌립니다.
확인 번호 기능은 10 진수 또는 정수입니다.
function IsDecimalExist(p_decimalNumber) {
var l_boolIsExist = true;
if (p_decimalNumber % 1 == 0)
l_boolIsExist = false;
return l_boolIsExist;
}
아마도 이것이 당신을 위해 작동합니까?
정규식을 사용하여 숫자에 쉼표가 있는지 확인하고 없으면 쉼표와 스트라이프를 추가합니다.
var myNumber = '50';
function addCommaStripe(text){
if(/,/.test(text) == false){
return text += ',-';
} else {
return text;
}
}
myNumber = addCommaStripe(myNumber);
값이 문자열 인 경우 다음을 사용하십시오 (예 : from <input
) :
Math.floor(value).toString() !== value
.toString()
바닥에 추가 하여 value == "1."
(소수 구분 기호 또는 다른 문자열로 끝나는) 경우에도 작동하도록합니다 . 또한 Math.floor
항상 일부 값을 반환하므로 .toString()
절대 실패하지 않습니다.