Разработвам графично изчислително приложение за моя курс по компютърни науки. Правя много изчисления върху вектори, но понякога получавам някои сериозни съкращения, тъй като това е плаваща аритметика.
Проблемът е, че опитах някои начини за ограничаване на десетичните знаци на числата с плаваща запетая до, например, 2 места. Ето някои неща, които опитах:
1 – Разделете и умножете по 100. Това не работи винаги. Всъщност това никога не работи за мен.
2 - Използвайте DecimalFormat. Този начин на форматиране работи добре, ако имам числа под 1000. Когато имам числа като 1003.3124, той форматира до 1003.31. Тъй като това форматиране връща низ, функцията за синтактичен анализ за Floats не работи поради кома. Опитах се да настроя DecimalFormatSymbols() setGroupingSeparator на различни знаци, включително без интервал и без дължина ( 'ȀB', ' ', ...), но получавам '?' вместо желания символ.
3 - Задайте локала на САЩ. Тъй като моят Windows работи на бразилски португалски (тук точката и запетаята имат различни документи: вашите 1300,42 са нашите 1300,42!), мисля, че това е глупаво, но не това е въпросът тук. Това също не реши нищо.
4 - Вземете низа, премахнете запетаите и върнете числото Float. Това е, което правя сега и работи правилно. Въпреки това, тъй като това е графично приложение, аз правя нормализации през цялото време с числата. Така че String решението винаги е твърде тежко.
Така че знаете ли за друг начин за решаване на този проблем? Трябва ми най-оптимизираният. Съжалявам, ако не съм бил ясен.