जवाबों:
मापांक का उपयोग करने से काम होगा:
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 में समर्थित नहीं है।
यह के लिए झूठे रिटर्न NaN
, Infinity
और गैर-संख्यात्मक तर्क जबकि x % 1 != 0
रिटर्न सच।
Number.isInteger(12.0)
लौटता है true
।
Number.isInteger('1e3')
लिए false
, हालांकि Number.isInteger(1e3)
यह सच है। प्रश्न के इरादे को मानते हुए गैर-पूर्णांक मानों (बजाय प्रतिनिधित्व में एक दशमलव बिंदु की वास्तविक उपस्थिति) को खोजना है, तो स्ट्रिंग मान '12 .0 ' पास होना चाहिए क्योंकि यह एक पूर्णांक का प्रतिनिधित्व करता है, लेकिन फिर से Number.isInteger('12.0')
है false
।
number
यह पूरा है या नहीं। यदि आपका इनपुट एक स्ट्रिंग है, तो आपको इसे number
पहले उदाहरण के माध्यम से parseFloat()
, निश्चित रूप से परिवर्तित करने की आवश्यकता है ।
या आप इसका उपयोग यह जानने के लिए कर सकते हैं कि क्या यह दशमलव नहीं है:
string.indexOf(".") == -1;
yournumber.toString.indexOf(".")
सबसे आम समाधान संख्या के पूर्णांक भाग को छीनना है और इसकी तुलना शून्य की तरह करना है:
function Test()
{
var startVal = 123.456
alert( (startVal - Math.floor(startVal)) != 0 )
}
startVal != Math.floor(startVal)
?
Math.Floor
समारोह दशमलव मान लेता है और सबसे बड़ा दशमलव मान जावास्क्रिप्ट में अनुमति दी है 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-बिट पूर्णांक में परिवर्तित करता है ।
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
।
Number.isInteger()
शायद सबसे संक्षिप्त है। यदि यह पूर्णांक है और यह गलत है तो यह सही है।
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;
}
parseInt(num) === num
जब कोई संख्या पास हुई, parseInt()
तो संख्या को int के रूप में लौटाता है:
parseInt(3.3) === 3.3 // false because 3 !== 3.3
parseInt(3) === 3 // true
parseInt(3.0) === 3.0 // true
दशमलव संख्या से विभाजित करके संख्या स्ट्रिंग को सरणी में बदलें। फिर, यदि सरणी का केवल एक मान है, तो इसका मतलब है कि स्ट्रिंग में कोई दशमलव नहीं है।
if(!number.split(".")[1]){
//do stuff
}
इस तरह से आप यह भी जान सकते हैं कि पूर्णांक और दशमलव वास्तव में क्या हैं। एक और अधिक उन्नत उदाहरण होगा।
number_to_array = string.split(".");
inte = number_to_array[0];
dece = number_to_array[1];
if(!dece){
//do stuff
}
यहाँ मेरी गार्ड लाइब्रेरी का एक अंश है (डेविड हरमन द्वारा प्रभावी जावास्क्रिप्ट से प्रेरित):
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
आप इसे 10 से गुणा कर सकते हैं और फिर 10 के साथ एक " मोडुलो " ऑपरेशन / डिविज़न कर सकते हैं , और जांच सकते हैं कि क्या दो ऑपरेशन का परिणाम शून्य है। उस दो संचालन के परिणाम दशमलव बिंदु के बाद आपको पहला अंक देंगे । यदि परिणाम शून्य के बराबर है तो संख्या पूरी संख्या है।
if ( (int)(number * 10.0) % 10 == 0 ){
// your code
}
function isDecimal(num) {
return (num !== parseInt(num, 10));
}
आप दशमलव भाग को छोड़ने के लिए मूल्य ( ^ 0
या ~~
) को परिवर्तित नहीं करने वाले बिटकॉइन संचालन का उपयोग कर सकते हैं , जिसका उपयोग गोलाई के लिए किया जा सकता है। संख्या को गोल करने के बाद, इसकी तुलना मूल मूल्य से की जाती है:
function isDecimal(num) {
return (num ^ 0) !== num;
}
console.log( isDecimal(1) ); // false
console.log( isDecimal(1.5) ); // true
console.log( isDecimal(-0.5) ); // true
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
तो जाहिर है कुछ उपयोगकर्ता स्पष्टीकरण चाहते हैं। मैं इसे टुकड़ों में तोड़ दूंगा: (संख्या 1%)
कोष्ठक का मतलब है कि पहले उन ऑपरेशनों को करना। संख्या - फ़ंक्शन द्वारा पारित एक चर। % - एक मापांक प्रतीक जो दाईं ओर से बाईं संख्या को विभाजित करने का प्रयास करता है। यदि शेष है तो इसे दशमलव के रूप में लौटाता है। यदि यह समान रूप से विभाजित होता है तो यह 0 देता है।
इसलिए, हमारे पास अब तक जो राशि है, उसे जमा करें। (संख्या 1) वापस आ जाएगी:
0 जब समान रूप से विभाजित किया जाता है या #। ##### यदि नहीं
० == असत्य।
[Any_NUMBER_NOT_ZERO] == सच।
उदाहरण: नया बुलियन (0) गलत है नया बुलियन (12312.1231) सच है
अन्य विकल्प: एक उपयोगकर्ता (संख्या 1%) के मूल्य को वापस करने की कोशिश कर सकता है, जो मूल रूप से एक ही चीज को प्राप्त करेगा। चूंकि रिटर्न (0) गलत है और रिटर्न (1.213113) सही है।
लेकिन मैं एक बुलियन मूल्य वापस करना चाहता था। इसलिए एक बूलियन में एक मूल्य को लागू करने के लिए एक शॉर्टकट के रूप में मैंने एक जोड़ा! इसके पहले प्रतीक।
के रूप में कई पता हो सकता है। मतलब नहीं। लेकिन यह एक बूलियन में एक मूल्य को भी मजबूर करता है।
चूँकि! सिम्बोल एक बूलियन में मूल्य को बल देता है और यह इसके मूल्य को उलट देता है। मैं उपयोग करता हूं !! एक बूलियन में मूल्य को मजबूर करने के लिए और इसके मूल बूलियन मान पर वापस इसके मूल्य को उल्टा करें।
चेक नंबर के लिए फ़ंक्शन दशमलव या पूरी संख्या है
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);
यदि मान स्ट्रिंग है (जैसे <input
) से निम्नलिखित का उपयोग करें :
Math.floor(value).toString() !== value
मैं .toString()
उन मामलों के लिए भी काम करने के लिए फर्श पर जोड़ता हूं जब value == "1."
(दशमलव विभाजक या किसी अन्य स्ट्रिंग के साथ समाप्त होता है)। इसके अलावा Math.floor
हमेशा कुछ मान देता है तो .toString()
विफल रहता है कभी नहीं।