මට ජාවාස්ක්රිප්ට් හි කරදරකාරී ගැටලුවක් තිබේ .
> 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( n19 වන පාදයේ වලංගු ඉලක්කම් නොවන නිසා ).
එබැවින් එය ඔබ ඇමතූ ආකාරයට හැසිරෙන අතර එය parseInt("I", 19)ඉහත වගුවෙන් දශම 18 බවට පරිවර්තනය වේ.
parseInt('Infini',24).
nවන පාදයේ වලංගු ඉලක්කම් බැවින් එය ඇත්ත වශයෙන්ම අවසන් වේ parseInt("Infini", 24).
සිදුවීම් අනුපිළිවෙල මෙන්න:
1/0 වෙත ඇගයීමට ලක් කරයි InfinityparseInt19 වන පාදයේ 18 වන කියවීම Infinityසහ සතුටින් සටහන් කිරීමIparseInt එය පරිවර්තනය කළ නොහැකි බැවින් ඉතිරි කොටස නොසලකා හරියි.ඔබට ඕනෑම පදනමක් >= 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)වලංගු සංඛ්යා වේ. එබැවින්, “අනන්තය” සිට එය I19 වන පදනම ගෙන 10 වන පදනම බවට පරිවර්තනය වන අතර එය 18 වන බවට පත්වේ. එවිට එය ඊළඟ අක්ෂරය එනම් n19 වන පාදයේ නොමැති අතර එය ඊළඟ අක්ෂර ඉවතලයි. )
එබැවින්, ඔබ ලියන්නේ නම් 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උදව්වක් විය හැකිය.