من در قالب بندی اعشار دو برابر مشکل دارم. اگر من یک مقدار دو برابر داشته باشم ، به عنوان مثال4. 0 ، چگونه می توانم اعشار را به طوری قالب بندی کنم که در عوض 4. 00 باشد؟
14 پاسخ 14
یکی از راه ها استفاده از شماره FORMAT است.
4. 00
من کاما می گیرماین همان کاری است که من انجام دادم."متغیر دو برابر ؛ فرمت NumberFormat = DecimalFormat جدید ("#0. 00 ") ؛ System. out. println (Formatter. format (متغیر)) ؛
شما به دلیل زبان پیش فرض مورد استفاده JVM خود ، کاما در حال گرفتن هستید ، که احتمالاً متفاوت از Nambari است. نگاهی به NumberFormat Javadoc: docs. oracle.com/javase/1. 4. 2/docs/api/java/text/…
همانطور که ZIM2001 اشاره کرد ، محلی شما ممکن است متفاوت باشد. پیوند ارائه شده در پاسخ من را بخوانید. در پایان اطلاعاتی در این باره پیدا خواهید کرد.
به صورت اختیاری ممکن است بخواهید جداکننده دیگری را برای رقم های بیش از 3 قبل از کاما اضافه کنید ، سپس از numberformat formatter = decimalformat جدید ("#، 000. 00") استفاده کنید. system. out. println (formatter. format (4. 0)) ؛
با جاوا 8 می توانید از روش قالب استفاده کنید. جدید
- f برای مقدار نقطه شناور استفاده می شود ..
- 2 پس از اعشار ، تعداد مکان های اعشاری بعد از آن.
برای بیشتر نسخه های جاوا ، می توانید از اعشار استفاده کنید: -
محلی که همیشه مورد استفاده قرار می گیرد ، موردی است که توسط locale. getDefault () بازگردانده شده است.
برای جلوگیری از علائم اعشاری خاص محلی (مانند کاما) ، محل محلی ایالات متحده را مشخص کنید: string. format (locale. us ، "٪. 2f" ، 4. 52135).
من می گویم "برای استفاده از نقطه اختصاصی محلی به عنوان یک علامت اعشاری ، محل محلی ایالات متحده را مشخص کنید" .. این ایده که عادت های ما مناسب هستند و هر چیز دیگری به نوعی چیزهای "قومی" من را دیوانه می کند.
simonegiai فرضیات احمقانه ای را ایجاد نمی کند ، برخی از افراد ممکن است به اعشاری نیاز داشته باشند تا نقطه باشند. به عنوان مثال ، من در حال نوشتن تابعی هستم که یک سند CSV را صادر می کند ، و نمی توانم کاما داشته باشم زیرا شخصیت کاما تعیین کننده است.
با استفاده از string. format ، می توانید این کار را انجام دهید:
به کاما توجه کنید که این مسئله را از پاسخ @وینسنت متفاوت می کند
یک منبع خوب برای قالب بندی ، صفحه رسمی جاوا در این زمینه است
شما همیشه می توانید از روش استاتیک printf از system. out استفاده کنید - سپس فرمت مربوطه را پیاده سازی می کنید. این باعث صرفه جویی در فضای پشته ای می شود که در آن نمونه های دیگر شما را مجبور به انجام آن می کند.
ذخیره فضای پشته ای که یک جایزه بسیار بزرگ است ، با این وجود من این عقیده را دارم که این مثال بسیار قابل کنترل تر از هر پاسخ دیگر است ، به خصوص که بیشتر برنامه نویسان عملکرد PrintF را از C می شناسند (Java عملکرد/روش را کمی تغییر می دهد).
Baz من در اینجا جزئیات مهمی را از دست داده ام ، هیچ چاپی از چاپ وجود ندارد. OP درخواست کمک به قالب بندی (که می تواند با نگاه کردن به اسناد جاوا راحت تر حل شود) به جریان خروجی استاندارد. توضیح.
Baz هیچ نگرانی ندارد. بله ، من فرض کردم این کلاس است که شما به آن مراجعه کرده اید ، در تمام کتابهای من چاپی به روش استاتیک از سیستم گفته می شود. (زیرا این روش ها استاتیک هستند).
Baz از Docs The PrintStream Class System. out. من ممکن است اشتباه کنم - اگرچه به ارث بردن یک روش استاتیک کاملاً عجیب است (آیا حتی ممکن است)؟شما ، من انتظار دارم که صحیح باشد.
می توانید از هر یک از روشهای زیر استفاده کنید
اگر از java. text. decimalformat استفاده می کنید
اگر می خواهید آن را به قالب رشته ساده تبدیل کنید
تمام کد فوق 4. 00 چاپ می شود
یک روش جایگزین استفاده از روش setMinimumFractionDigits از کلاس NumberFormat است.
در اینجا شما اساساً مشخص می کنید که چند عدد را می خواهید بعد از نقطه اعشاری ظاهر کنید.
بنابراین با فرض اینکه مبلغ مشخص شده شما 2 باشد ، ورودی 4. 0 4. 00 تولید می کند.
اما اگر ورودی مضاعف شما حاوی بیش از مقدار مشخص شده باشد ، حداقل مقدار مشخص شده را می گیرد ، سپس یک رقم دیگر را به بالا/پایین اضافه کنید
به عنوان مثال ، 4. 15465454 با حداقل مقدار 2 مشخص شده 4. 155 تولید می کند
روش های زیادی وجود دارد که می توانید این کار را انجام دهید. به آنها داده می شود:
فرض کنید شماره اصلی شما در زیر آورده شده است:
با استفاده از NumberFormat:
با استفاده از string. format:
با استفاده از اعشار و الگوی:
با استفاده از اعشار و الگوی
در همه موارد خروجی خواهد بود: 2354548. 23
توجه داشته باشید :
در حین گرد کردن می توانید mode RoundingMode را در قالب خود اضافه کنید. در اینجا برخی از حالت های گرد در زیر آورده شده است:
در اینجا واردات آمده است:
اولین شماره واردات. سپس این را اضافه کنید:
این به شما دو مکان اعشاری می دهد و در صورت برخورد با ارز ، یک علامت دلار قرار می دهید.
سوال در مورد نمایش ارز نیست و با استفاده از توابع قالب بندی با دقت بیشتری پاسخ داده می شود) مانند پاسخ در سایر پاسخ ها).
شما می توانید آن را به شرح زیر انجام دهید:
من می دانم که این یک موضوع قدیمی است ، اما اگر واقعاً دوست دارید به جای کاما دوره ای داشته باشید ، فقط نتیجه خود را به عنوان X ، 00 در یک رشته ذخیره کنید و سپس فقط آن را برای یک دوره تغییر دهید تا X. 00 را بدست آورید
ساده ترین راه فقط استفاده از جایگزینی است.
خروجی X. 00 مورد نظر شما خواهد بود. همچنین برای آسان کردن این کار می توانید همه این کارها را به صورت یک انجام دهید و آن را در یک متغیر دوتایی ذخیره کنید:
من می دانم که این پاسخ در حال حاضر مفید نیست اما شاید کسی که این انجمن را بررسی کند ، به دنبال یک راه حل سریع مانند این خواهد بود.
فارکس را از کجا شروع کنیم...
ما را در سایت فارکس را از کجا شروع کنیم دنبال می کنید
برچسب :
نویسنده : علیرضا خمسه
بازدید : <-PostHit->
تاريخ : چهارشنبه
2 فروردين
1402 ساعت: 12:35