در زبان C اعداد اعشاری نیز قابل نمایش است. دادههای صحیح در بسیاری موارد مناسب است. اما برای مقادیر خیلی بزرگ و برای مقادیر کسری کوچک که در اغلب زمینههای علمی کاربرد دارد، به دادههای از نوع ممیز شناور یا floating point نیاز است. برای نوشتن ثابتهای با ممیز شناور دو روش به کار میرود.
روش اول که سادهترین راه است، آن است که از علامت ممیز (که در انگلیسی “.” است) استفاده کنیم. مثالهای زیر از این نوع است.
۰٫۹۹۶ , ۱۵٫۰ , ۳٫۱۴۱۵ , ۷٫ ,.۲۷۵
روش دوم که نمایش علمی نیز نامیده میشود، روش کوتاهنویسی مفیدی است. در این روش هر مقدار شامل دو جزء است: یک قسمت عددی که آن را مانتیس نامند و بهدنبال آن یک قسمت نما یا توان میآید که قسمت مانتیس باید در ۱۰ به توان نما ضرب شود. بین این دو قسمت حرف E یا e (که حرف اول exponent است) به مفهوم نما یا توان به کار میرود. برای مثال۳E2 به مفهوم ۳*۱۰۲ و -۱۲۵٫۷E-3 به مفهوم -۱۲۵٫۷*۱۰-۳ است. در واقع یک مقدار ثابت با ممیز شناور، عددی است در مبنای ۱۰ که شامل یک ممیز یا علامت اعشار یعنی “.” یا شامل یک نما یا هر دو است؛ مانند مثالهای زیر
۰٫ , ۰٫۰ , ۱٫ , ۰٫۹۲ ۱۸۲٫۲۵ , -۳٫۱۴۱۵ , ۵E-5 , 0.775E-3
البته قسمت نما نمیتواند یک عدد کسری باشد، پس ۲۹٫۵E3.4 درست نیست. در بعضی نسخههای C برای اینکه مشخص کنند که مقادیر مورد نظر یک کلمه اشغال کرده است حرف F (یا f) را به آخر آن اضافه میکنند، مانند ۶٫۱۲۵E5F .
همچنین برای مشخص کردن اینکه مقادیر مورد نظر فضایی به طول دو کلمه را اشغال کرده است، حرف L (یا l) به آخر آن اضافه میشود مانند ۰٫۱۲۳۴۵۶۷۸۹E-25L .
دقت مقادیر ثابت با ممیز شناور ممکن است برحسب نسخههای مختلف تغییر کند، ولی همه آنها حداقل ۶ رقم با معنی را میپذیرند.
برای اعلان متغیرهایی از نوع floating point از دو کلمه کلیدی “float” و “double” استفاده میشود، مانند
float a , b , c ;
double x , y , z ;
که در آن کلمه “double” به مفهوم دقت مضاعف یا double precesion است و در اغلب ماشینها طول فضایی که برای متغیرهای توصیف شده با آن رزرو میشود، دو برابر “float” است. یک متغیر توصیف شده با “float” بهطور متعارف ۴ بایت در حافظه اشغال میکند، پس در “double” این فضا ۸ بایت خواهد شد و نمایش درونی مقادیر floating-point نیز از ویژگیهای معماری سختافزار کامپیوتر است و هنوز کاملاً استاندارد نیست. در مورد میزان دقت float و double نیز باید به مستندات کامپایلر مربوط مراجعه کرد. در برخی کامپایلرها برای اعلان متغیرهای از نوع double نیز میتوان آنها را به صورت long float تعریف کرد. بنابراین دو روش اعلان زیر معادلاند.
double a , b , c ; long float a , b , c ;
به هرحال اگر کلمه توصیفکننده long به تنهایی جلوی متغیری به کار رود، آن متغیر به صورت پیشفرض از نوع مقادیر صحیح خواهد بود. بنابراین با دستور long a , b , c ; سه متغیر c , b , a از نوع صحیح خواهند بود.