Я разрабатываю приложение для графических вычислений для своего курса информатики. Я делаю много вычислений над векторами, но иногда я получаю серьезные усечения, так как это арифметика с плавающей запятой.
Проблема в том, что я пробовал несколько способов ограничить десятичные разряды чисел с плавающей запятой, например, двумя знаками. Вот некоторые вещи, которые я пробовал:
1 - Разделите и умножьте на 100. Это работает не всегда. На самом деле это никогда не работает для меня.
2 - Используйте десятичный формат. Этот способ форматирования хорошо работает, если у меня есть числа до 1000. Когда у меня есть числа, такие как 1003.3124, он форматируется до 1,003.31. Так как это форматирование возвращает строку, функция разбора для чисел с плавающей запятой не работает из-за запятой. Я попытался установить для DecimalFormatSymbols() setGroupingSeparator разные символы, включая символы без пробела и без длины ('ȀB', ' ',...), но я получаю '?' вместо желаемого символа.
3 - Установите Локаль на США. Так как моя винда работает на бразильском португальском (здесь у точки и запятой разные бумаги: у вас 1300,42 это у нас 1300,42!) думаю это глупо, но тут не в этом вопрос. Это тоже ничего не решало.
4 - Возьмите строку, удалите запятые и верните число с плавающей запятой. Это то, что я делаю сейчас, и это работает правильно. Однако, поскольку это графическое приложение, я все время выполняю нормализацию с числами. Таким образом, решение String всегда слишком тяжелое.
Итак, вы знаете другой способ решения этой проблемы? Мне нужен самый оптимизированный. Извините, если я не был ясен.