با توجه به این که در C++
از IEEE754
استفاده میشه پس باید دقت اعداد اعشاری رو در این استاندارد بررسی کنیم.
دقت عدد اعشاری در سیستم IEEE754
به توان ۲ بستگی داره. از اونجا که تعداد ارقام توان برای اعداد اعشاری در بازههای مختلف ثابت هست و به استاندارد مربوطه، بنابراین دقت اعداد اعشاری در بازههای مختلف تفاوتی نداره.
به طور کلی دقت اعداد اعشاری در بازههای کوچکتر بیشتر و در بازههای بزرگتر کمتر هست. فرض کنیم یک عدد به صورت ممیز شناور ذخیره شده دقت به صورت زیر محاسبه میشه
precision = 2^{p-s+1}
که s
تعداد ارقام بامعنی در اون نوع دادهی ممیز شناور و p
توان به دست اومده قبل از تاثیر آفست هست.
در روش ذخیرهسازی ممیز شناور، اعداد با n
رقم اعشار در نزدیکی صفر به هم نزدیکتر هستند تا اعداد با n
رقم اعشار در نزدیکی یک و اعداد با n
رقم اعشار در نزدیکی یک به هم نزدیکتر هستند تا اعداد با n
رقم اعشار در نزدیکی دو. بنابراین
قاعدهی کلی: در ممیز شناور هرچه اعداد بزرگتر میشوند (در صورتی که از نظر ریاضی دقت آنها ثابت باشد) از نظر پیادهسازی IEEE754 دقت آنها کمتر میشود.
مثال: عدد 1.123412341234
از نظر ریاضی دقتی برابر 1234.123412341234
دارد اما از نظر پیادهسازی ممیز شناور دقت عدد بزرگتر کمتر خواهد بود.
هیچ پژوهش انسانی نمیتواند ادعای علمی بودن داشته باشد، مگر اینکه از برهان ریاضی برخوردار باشد (لئوناردو داوینچی)