سلام. من در C# دو متغیر تعریف کردم:
double dbl=100,000,000;
float count=2.2;
وقتی این دو متغیر رو در هم ضرب می کنم عدد زیر رو بهم میده:
dbl*count= 220,000,005
چرا نتیجه 220,000,000 نیست؟ راه حلش چیه؟
سلام. من در C# دو متغیر تعریف کردم:
double dbl=100,000,000;
float count=2.2;
وقتی این دو متغیر رو در هم ضرب می کنم عدد زیر رو بهم میده:
dbl*count= 220,000,005
چرا نتیجه 220,000,000 نیست؟ راه حلش چیه؟
double و float با سیستم ممیز شناور محاسبه انجام می دهند، مزیت ممیز شناور در اینه که بازه عددی بزرگی ایجاد می کنه ولی در عوض تعداد رقم های با ارزش کمتری رو با دقت ذخیره می کنه، یعنی الزاما نتیجه دقیق نیست. در نتیجه محاسبات ممیز شناور تخمینی است و برایش کمی اینور و اونور عادی ئه.
برای همینه که فرضا برای محاسبات مالی از float و double استفاده نمی کنند. در اینجور موارد بجای float و double از decimal استفاده کنید که رقم ها رو با دقت بیشتری ذخیره می کنه.
رجوع شود به :
مشکل در استفاده از FLOAT
سوال: مقادیر اعشاری
سوال: بهترین نوع داده برای مبلغ در C#