راکت

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

6 پاسخ

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

البته چنتا رو کشف کردم:
۱) 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
ثبت پرسش جدید

پاسخ‌ها

6
بامداد
بامداد
@bamdad

محاسبات اعداد 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 رو خواهی دید

امید شجاعیان زنجانی
امید شجاعیان زنجانی
@omidshz

تخصص: برنامه نویس IOS

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

شاید پاسخ شما همین‌جا باشد

بامداد
بامداد
@bamdad

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

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

بامداد
بامداد
@bamdad

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

var a = 0.01;
var b = 0.02;
console.log(a+b);
// Output : 0.03
امید شجاعیان زنجانی
امید شجاعیان زنجانی
@omidshz

تخصص: برنامه نویس IOS

@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

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

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

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