මට ජාවාස්ක්රිප්ට් හි කරදරකාරී ගැටලුවක් තිබේ .
> parseInt(1 / 0, 19)
> 18
ඇයි ඇයි parseInt
කාර්යය නැවත 18
?
මට ජාවාස්ක්රිප්ට් හි කරදරකාරී ගැටලුවක් තිබේ .
> parseInt(1 / 0, 19)
> 18
ඇයි ඇයි parseInt
කාර්යය නැවත 18
?
Answers:
එහි ප්රති result ලය 1/0
වන්නේ Infinity
.
parseInt
එහි පළමු තර්කය නූලක් ලෙස සලකන අතර එයින් අදහස් කරන්නේ පළමුවෙන්ම Infinity.toString()
හැඳින්වෙන්නේ නූල් නිපදවීමයි "Infinity"
. එබැවින් එය "Infinity"
19 වන පාදයේ දශමයට පරිවර්තනය කිරීමට ඔබ ඉල්ලා සිටි ආකාරයටම ක්රියා කරයි .
19 වන පාදයේ ඉලක්කම් සහ ඒවායේ දශම අගයන් මෙන්න:
Base 19 Base 10 (decimal)
---------------------------
0 0
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
a 10
b 11
c 12
d 13
e 14
f 15
g 16
h 17
i 18
මීළඟට සිදුවන්නේ, එහි කොටස විග්රහ කළ හැකිදැයි සොයා ගැනීමට parseInt
ආදානය පරිලෝකනය කර "Infinity"
පළමු කොටස පිළිගැනීමෙන් පසුව නතර වේ I
( n
19 වන පාදයේ වලංගු ඉලක්කම් නොවන නිසා ).
එබැවින් එය ඔබ ඇමතූ ආකාරයට හැසිරෙන අතර එය parseInt("I", 19)
ඉහත වගුවෙන් දශම 18 බවට පරිවර්තනය වේ.
parseInt('Infini',24)
.
n
වන පාදයේ වලංගු ඉලක්කම් බැවින් එය ඇත්ත වශයෙන්ම අවසන් වේ parseInt("Infini", 24)
.
සිදුවීම් අනුපිළිවෙල මෙන්න:
1/0
වෙත ඇගයීමට ලක් කරයි Infinity
parseInt
19 වන පාදයේ 18 වන කියවීම Infinity
සහ සතුටින් සටහන් කිරීමI
parseInt
එය පරිවර්තනය කළ නොහැකි බැවින් ඉතිරි කොටස නොසලකා හරියි.ඔබට ඕනෑම පදනමක් >= 19
සඳහා ප්රති result ලයක් ලැබෙනු ඇති බව සලකන්න , නමුත් ඊට පහළින් ඇති පදනම් සඳහා නොවේ. භෂ්ම සඳහා >= 24
, n
එම අවස්ථාවේදී වලංගු ඉලක්කම් බවට පත්වන පරිදි ඔබට විශාල ප්රති result ලයක් ලැබෙනු ඇත .
parseInt
ඉංග්රීසි හෝඩියේ අක්ෂර 26 ක් ඇති බැවින් විශාලතම පදනම 36 ක් වන අතර සම්මුතිය යනු ඉලක්කම් සහ අකුරු ලබා දී ඇති පදනමේ වලංගු ඉලක්කම් සමූහයක් ලෙස භාවිතා කිරීමයි.
Infinity
කිරීමට යෝජනා කරමි "Infinity"
...
ඉහත පිළිතුරු වලට එකතු කිරීම සඳහා:
parseInt යන්නෙන් අදහස් කරන්නේ නූල් සංඛ්යා වලට විග්රහ කිරීමයි (හෝඩුවාව නමෙහි ඇත). ඔබගේ තත්වය තුළ, 1/0 දැනටමත් අංකයක් බැවින් ඔබට කිසිදු විග්රහයක් කිරීමට අවශ්ය නැත , එබැවින් එය ක්රියාකාරිත්වයේ අමුතු තේරීමක් වේ. ඔබට අංකයක් තිබේ නම් (ඔබ කරන) එය විශේෂිත පදනමක් බවට පරිවර්තනය කිරීමට අවශ්ය නම්, ඔබ ඒ වෙනුවට රේඩික්ස් සමඟ toString භාවිතා කළ යුතුය .
var num = 1 / 0;
var numInBase19 = num.toString(19); // returns the string "Infinity"
ඉහත පිළිතුරු වලට එකතු කිරීම
parseInt(1/0,19)
සමාන වේ parseInt("Infinity",19)
පදනම් අංක 19 තුළ 0-9
සහ A-I
(or a-i)
වලංගු සංඛ්යා වේ. එබැවින්, “අනන්තය” සිට එය I
19 වන පදනම ගෙන 10 වන පදනම බවට පරිවර්තනය වන අතර එය 18 වන බවට පත්වේ. එවිට එය ඊළඟ අක්ෂරය එනම් n
19 වන පාදයේ නොමැති අතර එය ඊළඟ අක්ෂර ඉවතලයි. )
එබැවින්, ඔබ ලියන්නේ නම් parseInt("Infinity",19)
හෝ parseInt("I",19)
ප්රති parseInt("i",19)
result ලය සමාන වනු ඇත 18
.
දැන්, ඔබ ලිවීමට නම් parseInt("I0",19)
ලබන ප්රතිඵල 342
ලෙස I X 19 (the base)^1 + 0 X 19^0
= 18 X 19^1 + 0 X 19^0
= 18 X 19 + 0 X 1
=342
ඒ හා සමානව, parseInt("I11",19)
ප්රති result ලය වනු ඇත6518
එනම්
18 X 19^2 + 1 X 19^1 + 1 X 19^0
= 18 X 19^2 + 1 X 19^1 + 1 X 19^0
= 18 X 361 + 1 X 19 + 1 X 1
= 6498 + 19 + 1
= 6518
if
උදව්වක් විය හැකිය.