এটি কি ভাষা দ্বারা সংজ্ঞায়িত করা হয়? একটি সংজ্ঞায়িত সর্বোচ্চ আছে? এটি বিভিন্ন ব্রাউজারে আলাদা?
1n << 10000n
কোনও নির্ভুলতা না হারিয়ে, কোনও নির্ভরতার প্রয়োজন ছাড়াই (এবং কোনও সীমা ছাড়িয়েও বলা বাহুল্য) সত্যই, সত্যই বড় একটি পূর্ণসংখ্যা।
এটি কি ভাষা দ্বারা সংজ্ঞায়িত করা হয়? একটি সংজ্ঞায়িত সর্বোচ্চ আছে? এটি বিভিন্ন ব্রাউজারে আলাদা?
1n << 10000n
কোনও নির্ভুলতা না হারিয়ে, কোনও নির্ভরতার প্রয়োজন ছাড়াই (এবং কোনও সীমা ছাড়িয়েও বলা বাহুল্য) সত্যই, সত্যই বড় একটি পূর্ণসংখ্যা।
উত্তর:
জাভাস্ক্রিপ্টের দুটি সংখ্যার প্রকার রয়েছে: Number
এবং BigInt
।
সর্বাধিক ব্যবহার করা সংখ্যার ধরণটি Number
হ'ল একটি 64-বিট ভাসমান পয়েন্ট আইইইই 754 নম্বর।
এই ধরণের বৃহত্তম বৃহত্তম নিখুঁত মানটি Number.MAX_SAFE_INTEGER
হ'ল:
এটিকে দৃষ্টিকোণে রাখার জন্য: এক কোয়াড্রিলিয়ন বাইট হ'ল পেটাবাইট (বা এক হাজার টেরাবাইট)।
এই প্রসঙ্গে "নিরাপদ" বলতে হ'ল পূর্ণসংখ্যার প্রতিনিধিত্ব করার ক্ষমতা এবং তাদের সঠিকভাবে তুলনা করার ক্ষমতা বোঝায়।
মনে রাখবেন যে সমস্ত ধনাত্মক এবং নেতিবাচক পূর্ণসংখ্যার দৈর্ঘ্য 2 53 এর বেশি নয়
Number
, টাইপটিতে এটি উপস্থাপনযোগ্য (প্রকৃতপক্ষে, পূর্ণসংখ্য 0 এর দুটি উপস্থাপনা রয়েছে, +0 এবং -0)।
এর চেয়ে বড় পূর্ণসংখ্যার নিরাপদে ব্যবহার করতে আপনাকে ব্যবহার করতে হবে BigInt
, যার কোনও উপরের বাউন্ড নেই।
নোট করুন যে বিটওয়াইস অপারেটর এবং শিফট অপারেটরগুলি 32-বিট পূর্ণ সংখ্যায় কাজ করে, সুতরাং সেই ক্ষেত্রে সর্বাধিক নিরাপদ পূর্ণসংখ্যা 2 31 -1 বা 2,147,483,647।
const log = console.log
var x = 9007199254740992
var y = -x
log(x == x + 1) // true !
log(y == y - 1) // also true !
// Arithmetic operators work, but bitwise/shifts only operate on int32:
log(x / 2) // 4503599627370496
log(x >> 1) // 0
log(x | 1) // 1
9,007,199,254,740,992 সংখ্যাটির বিষয়ে প্রযুক্তিগত নোট: এই মানটির সঠিক আইইইই-754 উপস্থাপনা রয়েছে এবং আপনি একটি ভেরিয়েবল থেকে এই মানটি নির্ধারণ ও পড়তে পারেন, সুতরাং খুব সাবধানতার সাথে নির্বাচিত অ্যাপ্লিকেশনগুলির জন্য পূর্ণসংখ্যার ডোমেনের চেয়ে কম বা সমান এই মানটি, আপনি এটি সর্বাধিক মান হিসাবে বিবেচনা করতে পারেন।
সাধারণ ক্ষেত্রে, আপনাকে অবশ্যই এই আইইইই -754 মানটিকে নির্ভুল হিসাবে বিবেচনা করতে হবে, কারণ এটি 9,007,199,254,740,992 বা 9,007,199,254,740,993 লজিক্যাল মান এনকোড করছে কিনা তা অস্পষ্ট।
4294967295 === Math.pow(2,32) - 1;
> = ইএস 6:
Number.MIN_SAFE_INTEGER;
Number.MAX_SAFE_INTEGER;
<= ইএস 5
রেফারেন্স থেকে :
Number.MAX_VALUE;
Number.MIN_VALUE;
Number.MIN_VALUE
হ'ল সম্ভাব্যতমতম ধনাত্মক সংখ্যা। অন্তত মান (যেমন কম অন্য কিছু আর) সম্ভবত -Number.MAX_VALUE
।
Number.MIN_SAFE_INTEGER
এবংNumber.MAX_SAFE_INTEGER
এটি 2 53 == 9 007 199 254 740 992 This এটি Number
52-বিট ম্যান্টিসায় ভাসমান-পয়েন্ট হিসাবে সংরক্ষণ করা হয়।
ন্যূনতম মান -2 53 ।
এটি কিছু মজার জিনিস ঘটায়
Math.pow(2, 53) == Math.pow(2, 53) + 1
>> true
এবং বিপজ্জনক হতে পারে :)
var MAX_INT = Math.pow(2, 53); // 9 007 199 254 740 992
for (var i = MAX_INT; i < MAX_INT + 2; ++i) {
// infinite loop
}
আরও পড়া: http://blog.vjeux.com/2010/javascript/javascript-max_int-number-limits.html
i += 1000000000
জাভাস্ক্রিপ্টে, একটি নাম্বার রয়েছে Infinity
।
উদাহরণ:
(Infinity>100)
=> true
// Also worth noting
Infinity - 1 == Infinity
=> true
Math.pow(2,1024) === Infinity
=> true
এটি এই বিষয় সম্পর্কিত কিছু প্রশ্নের জন্য যথেষ্ট হতে পারে।
min
আপনি যখন কোনও ন্যূনতম মান সন্ধান করেন তবে ভেরিয়েবল শুরু করার পক্ষে এটি যথেষ্ট ভাল ।
Infinity - 1 === Infinity
1 - Infinity === -Infinity
জিমির উত্তরটি সঠিকভাবে অবিচ্ছিন্ন জাভাস্ক্রিপ্ট পূর্ণসংখ্যার বর্ণনাকে -9007199254740992 থেকে 9007199254740992 অন্তর্ভুক্ত হিসাবে অন্তর্ভুক্ত করেছে (দুঃখিত 9007199254740993, আপনি মনে করতে পারেন আপনি 9007199254740993, তবে আপনি ভুল! নিচে বা জেএসফিডে বিক্ষোভ প্রদর্শন )।
console.log(9007199254740993);
যাইহোক, এই উত্তরসূচীটি খুঁজে পাওয়ার / প্রমাণ করার কোনও উত্তর নেই (কুলএএজে 86 তার উত্তরটি যা 28.56 বছরের মধ্যে শেষ হবে; অন্যটি ছাড়া ), সুতরাং এটি করার কিছুটা দক্ষ উপায় এখানে রয়েছে (সুনির্দিষ্টভাবে বলতে গেলে, এটি আরও দক্ষ প্রায় 28.559999999968312 বছর :) এর মাধ্যমে, পরীক্ষার ফ্রিডল সহ :
/**
* Checks if adding/subtracting one to/from a number yields the correct result.
*
* @param number The number to test
* @return true if you can add/subtract 1, false otherwise.
*/
var canAddSubtractOneFromNumber = function(number) {
var numMinusOne = number - 1;
var numPlusOne = number + 1;
return ((number - numMinusOne) === 1) && ((number - numPlusOne) === -1);
}
//Find the highest number
var highestNumber = 3; //Start with an integer 1 or higher
//Get a number higher than the valid integer range
while (canAddSubtractOneFromNumber(highestNumber)) {
highestNumber *= 2;
}
//Find the lowest number you can't add/subtract 1 from
var numToSubtract = highestNumber / 4;
while (numToSubtract >= 1) {
while (!canAddSubtractOneFromNumber(highestNumber - numToSubtract)) {
highestNumber = highestNumber - numToSubtract;
}
numToSubtract /= 2;
}
//And there was much rejoicing. Yay.
console.log('HighestNumber = ' + highestNumber);
x++
আপনাকে বর্ধিত হওয়ার আগে x এর মান দেয় , যাতে সম্ভবত তাত্পর্যটি ব্যাখ্যা করা হয়। আপনি যদি এক্সের চূড়ান্ত মান হিসাবে একই জিনিসটির কাছে মূল্যায়ন করতে চান তবে আপনার এটি পরিবর্তন করা উচিত ++x
।
var MAX_INT = 4294967295;
আমি ভেবেছিলাম যে আমি চতুর হয়ে উঠব এবং x + 1 === x
আরও মানসম্পন্ন পদ্ধতির সাথে মানটি খুঁজে পাব।
আমার মেশিনটি প্রতি সেকেন্ডে কেবলমাত্র 10 মিলিয়ন গণনা করতে পারে ... তাই আমি 28.56 বছরের মধ্যে নির্দিষ্ট উত্তরটি দিয়ে আবার পোস্ট করব।
আপনি যদি এতক্ষণ অপেক্ষা করতে না পারেন তবে আমি এটি বাজি রাখতে রাজি
9007199254740992 === Math.pow(2, 53) + 1
যথেষ্ট প্রমাণ4294967295
যা Math.pow(2,32) - 1
বিট-শিফটিংয়ের সাথে প্রত্যাশিত সমস্যাগুলি এড়াতে পারেসন্ধান করা x + 1 === x
:
(function () {
"use strict";
var x = 0
, start = new Date().valueOf()
;
while (x + 1 != x) {
if (!(x % 10000000)) {
console.log(x);
}
x += 1
}
console.log(x, new Date().valueOf() - start);
}());
সংক্ষিপ্ত উত্তরটি "এটি নির্ভর করে"।
আপনি যদি কোথাও বিটওয়াইড অপারেটর ব্যবহার করছেন (বা যদি আপনি কোনও অ্যারের দৈর্ঘ্য উল্লেখ করছেন), সীমাগুলি হ'ল:
স্বাক্ষরবিহীন: 0…(-1>>>0)
সাইন ইন করুন: (-(-1>>>1)-1)…(-1>>>1)
(এটি এমনটি ঘটে যে বিটওয়াইজ অপারেটর এবং একটি অ্যারের সর্বাধিক দৈর্ঘ্য 32-বিট পূর্ণসংখ্যার মধ্যে সীমাবদ্ধ)
আপনি যদি বিটওয়াইজ অপারেটর ব্যবহার করছেন না বা অ্যারের দৈর্ঘ্যের সাথে কাজ করছেন না:
সাইন ইন করুন: (-Math.pow(2,53))…(+Math.pow(2,53))
এই সীমাবদ্ধতাগুলি "সংখ্যা" ধরণের অভ্যন্তরীণ উপস্থাপনার দ্বারা আরোপিত হয়, যা সাধারণত আইইইই 754 ডাবল-স্পষ্টতা ভাসমান-পয়েন্ট উপস্থাপনার সাথে মিলে যায়। (নোট করুন যে সাধারণ স্বাক্ষরিত পূর্ণসংখ্যার বিপরীতে, অভ্যন্তরীণ উপস্থাপনার বৈশিষ্ট্যগুলির কারণে negativeণাত্মক সীমাটির দৈর্ঘ্য ইতিবাচক সীমাটির পরিমাণের সমান, যা আসলে একটি নেতিবাচক 0 অন্তর্ভুক্ত করে !)
ECMAScript 6:
Number.MAX_SAFE_INTEGER = Math.pow(2, 53)-1;
Number.MIN_SAFE_INTEGER = -Number.MAX_SAFE_INTEGER;
MAX_SAFE_INTEGER
পিছনে কাজ করে সমস্ত ব্রাউজারে গণনা করা কি নির্ভরযোগ্য ? পরিবর্তে আপনি কি এগিয়ে যেতে হবে? অর্থাৎ, সংখ্যা।
Math.pow(2, 53)-1
একটি নিরাপদ অপারেশন? এটি বৃহত্তম সুরক্ষিত পূর্ণসংখ্যার চেয়ে বড় goes
ফলাফলের আগেই দেখিয়েছেন থেকে অনেক উত্তর true
এর 9007199254740992 === 9007199254740992 + 1
তা যাচাই করতে 9 007 199 254 740 991 সর্বোচ্চ এবং নিরাপদ পূর্ণসংখ্যা।
যদি আমরা জমে থাকা চালিয়ে যাই:
input: 9007199254740992 + 1 output: 9007199254740992 // expected: 9007199254740993
input: 9007199254740992 + 2 output: 9007199254740994 // expected: 9007199254740994
input: 9007199254740992 + 3 output: 9007199254740996 // expected: 9007199254740995
input: 9007199254740992 + 4 output: 9007199254740996 // expected: 9007199254740996
আমরা এটি জানতে পেরেছিলাম যে 9 007 199 254 740 992 এর বেশি সংখ্যার মধ্যে কেবলমাত্র সংখ্যাগুলিও প্রতিনিধিত্বযোগ্য ।
এটি কীভাবে ডাবল-নির্ভুলতা 64-বিট বাইনারি ফর্ম্যাটটিতে কাজ করে তা বোঝানোর জন্য এটি একটি প্রবেশদ্বার । আসুন দেখুন 9 007 199 254 740 992 এই বাইনারি ফর্ম্যাটটি ব্যবহার করে অনুষ্ঠিত হবে (উপস্থাপিত)।
এটি দেখানোর জন্য একটি সংক্ষিপ্ত সংস্করণ ব্যবহার করে 4 503 599 627 370 496 :
1 . 0000 ---- 0000 * 2^52 => 1 0000 ---- 0000.
|-- 52 bits --| |exponent part| |-- 52 bits --|
তীরটির বাম দিকে, আমাদের বিট মান 1 , এবং একটি সংলগ্ন রেডিক্স পয়েন্ট রয়েছে , তারপরে গুণক দ্বারা2^52
আমরা মূলত 52 টি ধাপে রেডিক্স পয়েন্টটি সরাই এবং এটি শেষে চলে যায়। এখন আমরা বাইনারি 4503599627370496 পাই।
সমস্ত বিট 1 সেট না করা পর্যন্ত এখন আমরা এই মানটিতে 1 টি জমা করতে শুরু করি যা দশমিক 9007 199 254 740 991 এর সমান ।
1 . 0000 ---- 0000 * 2^52 => 1 0000 ---- 0000.
(+1)
1 . 0000 ---- 0001 * 2^52 => 1 0000 ---- 0001.
(+1)
1 . 0000 ---- 0010 * 2^52 => 1 0000 ---- 0010.
(+1)
.
.
.
1 . 1111 ---- 1111 * 2^52 => 1 1111 ---- 1111.
এখন, কারণ ডাবল-স্পষ্টতা ision৪- বিট বাইনারি বিন্যাসে , এটি ভগ্নাংশের জন্য 52 বিটকে কঠোরভাবে বরাদ্দ করে , আরও 1 টি যোগ করার জন্য আর কোনও বিট বহন করার জন্য উপলব্ধ নেই, তাই আমরা যা করতে পারি তা হল সমস্ত বিট 0-এ সেট করা, এবং ঘাতক অংশটি পরিচালনা করুন:
|--> This bit is implicit and persistent.
|
1 . 1111 ---- 1111 * 2^52 => 1 1111 ---- 1111.
|-- 52 bits --| |-- 52 bits --|
(+1)
(radix point has no way to go)
1 . 0000 ---- 0000 * 2^52 * 2 => 1 0000 ---- 0000. * 2
|-- 52 bits --| |-- 52 bits --|
=> 1 . 0000 ---- 0000 * 2^53
|-- 52 bits --|
এখন আমরা 9 007 199 254 740 992 পেয়েছি , এবং এটির চেয়ে বেশি সংখ্যার সাথে, ফর্ম্যাটটি ভগ্নাংশের 2 গুণ হতে পারে , এর অর্থ এখন ভগ্নাংশের অংশে প্রতিটি 1 যোগ আসলে 2 সংখ্যার সমান হয়, এজন্য দ্বিগুণ -প্রিফিকেশন 64-বিট বাইনারি ফর্ম্যাটটি বিজোড় সংখ্যাগুলি ধরে রাখতে পারে না যখন সংখ্যাটি 9 007 199 254 740 992 এর বেশি হয় :
(consume 2^52 to move radix point to the end)
1 . 0000 ---- 0001 * 2^53 => 1 0000 ---- 0001. * 2
|-- 52 bits --| |-- 52 bits --|
সুতরাং যখন সংখ্যাটি 9007 199 254 740 992 * 2 = 18 014 398 509 481 984 এর বেশি হয়ে যায়, ভগ্নাংশের কেবল 4 বার অনুষ্ঠিত হতে পারে:
input: 18014398509481984 + 1 output: 18014398509481984 // expected: 18014398509481985
input: 18014398509481984 + 2 output: 18014398509481984 // expected: 18014398509481986
input: 18014398509481984 + 3 output: 18014398509481984 // expected: 18014398509481987
input: 18014398509481984 + 4 output: 18014398509481988 // expected: 18014398509481988
[ 2 251 799 813 685 248 , 4 503 599 627 370 496 ) এর মধ্যে সংখ্যাটি কেমন ?
1 . 0000 ---- 0001 * 2^51 => 1 0000 ---- 000.1
|-- 52 bits --| |-- 52 bits --|
রেডিক্স পয়েন্টের পরে বিট মান 1 হুবহু 2 ^ -1 হয়। (= 1/2 , = 0.5) সুতরাং যখন সংখ্যা 4 503 599 627 370 496 (2 ^ 52) এর চেয়ে কম হবে তখন পূর্ণসংখ্যার 1/2 বার উপস্থাপনের জন্য একটি বিট পাওয়া যায় :
input: 4503599627370495.5 output: 4503599627370495.5
input: 4503599627370495.75 output: 4503599627370495.5
2 251 799 813 685 248 (2 ^ 51) এর চেয়ে কম
input: 2251799813685246.75 output: 2251799813685246.8 // expected: 2251799813685246.75
input: 2251799813685246.25 output: 2251799813685246.2 // expected: 2251799813685246.25
input: 2251799813685246.5 output: 2251799813685246.5
// If the digits exceed 17, JavaScript round it to print it.
//, but the value is held correctly:
input: 2251799813685246.25.toString(2)
output: "111111111111111111111111111111111111111111111111110.01"
input: 2251799813685246.75.toString(2)
output: "111111111111111111111111111111111111111111111111110.11"
input: 2251799813685246.78.toString(2)
output: "111111111111111111111111111111111111111111111111110.11"
এবং এক্সপোনেন্ট অংশের উপলব্ধ রেঞ্জটি কী? ফর্ম্যাটটি এর জন্য 11 বিট বরাদ্দ করে। উইকির সম্পূর্ণ বিন্যাস : (আরও তথ্যের জন্য দয়া করে সেখানে যান)
সুতরাং, খাঁটি অংশটি 2 ^ 52 হতে আমাদের ঠিক e = 1075 সেট করতে হবে।
অন্যান্যরা ইতিমধ্যে জেনেরিক উত্তরটি দিয়েছেন, তবে আমি ভেবেছিলাম এটির দ্রুত নির্ধারণ করার পক্ষে এটি একটি ভাল ধারণা হবে:
for (var x = 2; x + 1 !== x; x *= 2);
console.log(x);
যা আমাকে ক্রোম 30 এ এক মিলিসেকেন্ডেরও কম সময়ের মধ্যে 9007199254740992 দেয়।
এটি 2 এর শক্তির পরীক্ষা করবে যা কোনটি 1 যুক্ত করার সাথে সাথে নিজেকে সমান করে।
চেষ্টা করুন:
maxInt = -1 >>> 1
ফায়ারফক্স 3.6 এ এটি 2 ^ 31 - 1।
^
মানে শক্তি উত্থাপিত । জাভাস্ক্রিপ্ট কনসোলে ^
কি XOR , উত্থাপিত নয়
101
এবং 2 হয় 010
। এখন, যদি আপনি 5(101) ^ 2(010) = 7(111)
এগুলি দ্বিখণ্ডিত করেন তবে আপনি এটি পড়ুন যদি আপনি বিশ্বাসী হন তবে এখানে যা আলোচনা করা হচ্ছে Math.pow()
তা ^
অপারেটর নয়
লেখার মুহূর্তে জাভাস্ক্রিপ্ট একটি নতুন ডাটা টাইপ গ্রহণ হয়: BigInt
। এটি চতুর্থ পর্যায়ে টিসি 39 প্রস্তাবটি ইকমাস্ক্রিপ্ট 2020 এ অন্তর্ভুক্ত করা হবে । BigInt
Chrome 67+, ফায়ারফক্স 68+, অপেরা 54 এবং নোড 10.4.0 এ উপলব্ধ। এটি সাফারিতে চলছে, ইত্যাদি ... এটি "n" প্রত্যয়যুক্ত সংখ্যাসূচককে পরিচয় করিয়ে দেয় এবং নির্বিচারে নির্ভুলতার জন্য অনুমতি দেয়:
var a = 123456789012345678901012345678901n;
যথার্থতা এখনও হারিয়ে যাবে, অবশ্যই যখন এই জাতীয় সংখ্যা (সম্ভবত অনিচ্ছাকৃতভাবে) কোনও সংখ্যার ডেটা প্রকারের জন্য জোর করা হয়।
এবং, স্পষ্টতই, সীমাবদ্ধ মেমরির কারণে সর্বদা যথাযথ সীমাবদ্ধতা থাকবে এবং প্রয়োজনীয় স্মৃতি বরাদ্দ করতে এবং এ জাতীয় বিশাল সংখ্যক গাণিতিক সম্পাদনের জন্য সময়ের প্রয়োজনে ব্যয় হবে।
উদাহরণস্বরূপ, এক লক্ষ দশমিক সংখ্যা সহ একটি সংখ্যার প্রজন্ম সমাপ্তির আগে একটি লক্ষণীয় বিলম্ব গ্রহণ করবে:
console.log(BigInt("1".padEnd(100000,"0")) + 1n)
...কিন্তু এটি কাজ করে.
আমি একটি সূত্র, এক্স- (এক্স + 1) = - 1 দিয়ে একটি সাধারণ পরীক্ষা করেছি এবং একাদশের সবচেয়ে বড় মান সাফারি, অপেরা এবং ফায়ারফক্সে (ওএস এক্সে পরীক্ষিত) কাজ করতে পারে 9e15 is আমি পরীক্ষার জন্য যে কোডটি ব্যবহার করেছি তা এখানে:
javascript: alert(9e15-(9e15+1));
9000000000000000
এখানে 1 টি গুরুত্বপূর্ণ চিত্র রয়েছে। `9007199254740992` এ 15 উল্লেখযোগ্য পরিসংখ্যান রয়েছে।
9000000000000000
যেমনটি রয়েছে - তে 1
এসএফ আছে। যেখানে 90*10^14
২. ( সিগফিগস্ক্যালকুলেটর.এপস্পট.কম ) এবং ম্যাথসফার্স.ম্যাসি.এইজ / অ্যালজেব্রা / ডেসিমালস / সিগফিগ এইচটিএম (নীচের বিভাগ)
MAX_SAFE_INTEGER
ধ্রুব একটি মান আছে9007199254740991
(9,007,199,254,740,991 বা ~ 9 কোয়াড্রিলিয়ন)। এই সংখ্যার পিছনে যুক্তিটি হ'ল জাভাস্ক্রিপ্ট আইইইই 754 তে উল্লিখিত হিসাবে ডাবল-স্পষ্টতা ফ্লোটিং-পয়েন্ট ফর্ম্যাট নম্বরগুলি ব্যবহার করে এবং কেবল নিরাপদে এবং এর মধ্যে সংখ্যাগুলি উপস্থাপন করতে পারে ।-(2^53 - 1)
2^53 - 1
এই প্রসঙ্গে নিরাপদ পূর্ণসংখ্যার প্রতিনিধিত্ব করার ক্ষমতা এবং তাদের সঠিকভাবে তুলনা করার জন্য বোঝায়। উদাহরণস্বরূপ,
Number.MAX_SAFE_INTEGER + 1 === Number.MAX_SAFE_INTEGER + 2
সত্যকে মূল্যায়ন করবে, যা গাণিতিকভাবে ভুল। দেখুন Number.isSafeInteger () আরও তথ্যের জন্য।যেহেতু সংখ্যার
MAX_SAFE_INTEGER
একটি স্থিতিশীল সম্পত্তি , আপনি সর্বদা এটি তৈরি করেছেন এমন একটি সংখ্যা অবজেক্টের সম্পত্তি হিসাবে নয় ।Number.MAX_SAFE_INTEGER
গুগল ক্রোম অন্তর্নির্মিত জাভাস্ক্রিপ্টে, সংখ্যাটি অসীম বলার আগে আপনি আনুমানিক 2 ^ 1024 এ যেতে পারেন।
জাভাস্ক্রিপ্টে সংখ্যার উপস্থাপনা 2^53 - 1
।
স্কাতো কব্জি:
বিটওয়াইজ অপারেশনের জন্য আপনি যে কোনও কিছু ব্যবহার করতে চান তা অবশ্যই 0x80000000 (-2147483648 বা -2 ^ 31) এবং 0x7fffffff (2147483647 বা 2 ^ 31 - 1) এর মধ্যে হওয়া উচিত।
কনসোল আপনাকে বলবে যে 0x80000000 সমান +2147483648, তবে 0x80000000 এবং 0x80000000 সমান -2147483648
হেক্স-ডেসিমাল স্বাক্ষরিত ইতিবাচক মান, সুতরাং 0x80000000 = 2147483648 - গাণিতিকভাবে সঠিক। আপনি যদি এটিকে একটি স্বাক্ষরিত মান করতে চান তবে আপনাকে ডান শিফট করতে হবে: 0x80000000 >> 0 = -2147483648। পরিবর্তে আপনি 1 << 31 লিখতে পারেন।
ফায়ারফক্স 3 টি বিশাল সংখ্যক সমস্যা বলে মনে হচ্ছে না।
1e + 200 * 1e + 100 জরিমানাটি 1e + 300 তে গণনা করবে।
সাফারিটিরও এটির সাথে কোনও সমস্যা নেই বলে মনে হচ্ছে। (রেকর্ডের জন্য, যদি অন্য কেউ এটি পরীক্ষা করার সিদ্ধান্ত নেয় তবে এটি ম্যাকের মধ্যে রয়েছে))
দিনের এই সময়ে যদি আমি আমার মস্তিষ্ক হারিয়ে না ফেলেছি তবে এটি 64-বিট সংখ্যার চেয়ে অনেক বড় bigger
100000000000000010 - 1 => 100000000000000020
নোড.জেএস এবং গুগল ক্রোম উভয়ই 1024 বিট ভাসমান পয়েন্ট মান ব্যবহার করছে বলে মনে হচ্ছে:
Number.MAX_VALUE = 1.7976931348623157e+308
2^53
হিসাবে উল্লেখ করা হয় MAX_SAFE_INT
কারণ যে বিন্দু উপরে মানগুলি অনুমান হয়, একইভাবে ভগ্নাংশ হয়।