ParseInt 16 radix number to 10 radix [duplicate] - javascript

This question already has an answer here:
JavaScript parseInt is giving me wrong number, what I'm doing wrong? [duplicate]
(1 answer)
Closed 7 years ago.
Why?
parseInt((10152174800132377).toString(16),16) ==
10152174800132376
Where the number of lost?

The number is lost, as it is to large to be representable exactly in JavaScript's Number type (it is a IEEE 754 double):
$ node
> 10152174800132377
10152174800132376

Related

javascript - toFixed covert problem in (444.2).toFixed(14) [duplicate]

This question already has answers here:
Is floating point math broken?
(31 answers)
Closed 1 year ago.
as the title
when I use toFixed to convert the float
(0.2).toFixed(4) -> 0.2000
(444.2).toFixed(4) -> 444.2000
(0.2).toFixed(14) -> 0.20000000000000
(444.2).toFixed(14) -> 444.19999999999999 //why ?!!!
I could not understand that what causes this result.
Is any javascript method to avoid this problem?
Floating point numbers cannot represent all decimals precisely in binary. one way to overcome this problem is using parseFloat:
console.log(parseFloat((444.2).toFixed(14)));

How to write negative binary number? [duplicate]

This question already has an answer here:
ECMAScript 6 negative binary literal
(1 answer)
Closed 3 years ago.
So 0b1 is 1. How to write -1 in binary format?
The docs says that the leftmost bit is reserved for sign, but where is that leftmost bit? Even 0b11111111111111111111111111111111 is still a positive number. I naively tried 1b with no success of course.
try
let a = -0b1;
console.log(a);

How does Javascript get this value? [duplicate]

This question already has answers here:
Why JavaScript treats a number as octal if it has a leading zero
(3 answers)
Closed 5 years ago.
We're having a discussion in the office about how the hell this math works in JavaScript.
There was an instance where we were multiplying by 010 instead of 10 and this gave the incorrect returned value.
For example...
25.25 * 010 = 202
25.25 * 10 = 252.5 as expected
whats even weirder is if you do parseFloat(010) it gives you 8!
For 010 is decimal 8, so it get 202.
console.log(25.25 * 010);
Look at this answer for Java: Why "010" equals 8?. JavaScript has to do the same.
The answer is, that an octal number starts with a leading zero 0.

Converting Decimal Number to Binary [duplicate]

This question already has answers here:
What is the JavaScript >>> operator and how do you use it?
(7 answers)
How do I convert an integer to binary in JavaScript?
(17 answers)
Closed 5 years ago.
I found this code on W3schools for converting decimal into binary.
function dec2bin(dec){
return (dec >>> 0).toString(2);
}
I don't understand what is the purpose for making zero fill right shift in this case? What is the use of setting the shift to 0 (i.e. dec >>> 0) since as I know it doesn't push any binary digit to the right at all?
I am a JS beginner. Thanks!

Javascript very simle function returns weird values [duplicate]

This question already has answers here:
Large numbers erroneously rounded in JavaScript
(6 answers)
Closed 7 years ago.
I have the folowing code:
Click
function Add(id) {
alert(id);
}
The value in the alert is 23905762501722144 (-2) from the original value.
Why does this happen?
https://jsfiddle.net/wvtqostd/4/
log2(23905762501722146) ~= 54.408
JavaScript stores all numbers - including integers - as double precision floats. Double precision mantissa/significand contains 52 bits of information, so some information gets lost storing so long/precise number as you have.
Because 23905762501722144 is to big to represent as integer value... try sending it as string value.

Categories