جاوااسکریپت چرا محاسبات float رو اینهمه پیچیده میکنه

واقعا چرااااااا ؟؟؟؟؟؟
من شاید به خاطر کار با زبان سوییفت بد عادت شدم یا اینکه جاوااسکریپت درسته میگه. حالا چطور میشه این مشکل رو درست کرد و آیا جاوااسکریپت باز مشکلات این مدلی داره ؟؟؟

البته چنتا رو کشف کردم:
۱) string + any type = string
2) bool = number(1,0) or bool 🤯
3) ????bool can (+ - * % /) to number 😭 why

var a = 0.1;
var b = 0.2;
console.log(a + b);

نتیجه :

0.30000000000000004

ثبت پرسش جدید
بامداد
@bamdad 3 سال پیش مطرح شد
0

محاسبات اعداد FLoat در Js دقیق نیس گاهی،
از روش زیر استفاده کن :

var a = 0.1 * 10;
var b = 0.2 * 10;
console.log((a+b) / 10);

یا اینجوری

var a = 0.1;
var b = 0.2;
console.log((a*10 + b*10) / 10);

هر دوش اوکی هست و در خروجی 0.3 رو خواهی دید


امید شجاعیان زنجانی
تخصص : برنامه نویس IOS
@omidshz 3 سال پیش مطرح شد
0

@bamdad
پس بهتره زمانی که با float کار میکنیم به عدد ۱۰ ضرب کنیم و بعد به عدد ۱۰ تقسیم کنیم تا جواب درست بگیریم.


بامداد
@bamdad 3 سال پیش مطرح شد
0

اگه ورودی هات معلوم نیست و از کاربر میگیری همین کارو بکن برای اطمینان

گفتم که گاهی دقیق نیس ، گاهیم درست کار میکنه . از عجایب JS هست


بامداد
@bamdad 3 سال پیش مطرح شد
1

برای اینک میگم گاهی دقیق نیس ، مثلا کد زیر درست کار میکنه و 0.03 رو بهت میده

var a = 0.01;
var b = 0.02;
console.log(a+b);
// Output : 0.03

امید شجاعیان زنجانی
تخصص : برنامه نویس IOS
@omidshz 3 سال پیش مطرح شد
0

@bamdad
اینو در این مورد پیدا کردم که چرا اینطوریه ولی سردرنیاوردم

JavaScript Numbers are Always 64-bit Floating Point

Unlike many other programming languages, JavaScript does not define different types of numbers, like integers, short, long, floating-point etc.

JavaScript numbers are always stored as double precision floating point numbers, following the international IEEE 754 standard.

This format stores numbers in 64 bits, where the number (the fraction) is stored in bits 0 to 51, the exponent in bits 52 to 62, and the sign in bit 63:

Value (aka Fraction/Mantissa) Exponent Sign
52 bits (0 - 51) 11 bits (52 - 62) 1 bit (63)

لینک زیر:
عنوان لینک مورد نظر


بامداد
@bamdad 3 سال پیش مطرح شد
0

آره اینو قبلا خونده بودم ، خلاصه جاوا اسکریپت گاهی بعضی جاها یه تفاوت هایی داره با زبان های دیگه ( و اینارو وقتی میفهمی حداقل با 1زبان مختلف کار کرده باشی ، بعد میای تو جاوا اسکریپت سورپرایز میشی😂


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام