Когда уместно использовать плавающие типы данных точности?

Попробуйте создать уникальный список перед печатью значений, это может быть что-то вроде в примере ниже. Ключевым моментом является метод seq_contains .

 <#assign uniqueList = []>
 <#list rentalUnitsOfTenant as ru>

    <#if ru.currentLease??>
        <#if ru.currentLease.contractType= "LIMITED">
            <#assign contract = msg["contract01"]>
            ...                  
        
        <#if !uniqueList?seq_contains(contract) >
            <#assign uniqueList =  uniqueList + [contract]>
        
    

 <#list uniqueList as contract>
     ${contract}<#sep>/
 

5
задан Edward Q. Bridges 6 April 2009 в 21:43
поделиться

7 ответов

Числа с плавающей точкой должны использоваться для того, для чего они были разработаны: вычисления, где то, что Вы хотите, является фиксированной точностью и Вами только, заботятся, что Ваш ответ точен в пределах определенного допуска. При необходимости в точном ответе во всех случаях Вы лучше всего используете что-то еще.

Вот три домена, где Вы могли бы использовать плавающую точку:

  1. Научные моделирования
    Научные приложения требуют большого перемалывания чисел и часто используют сложные численные методы решить системы дифференциальных уравнений. Вы обычно говорите плавающая точка двойной точности здесь.

  2. Игры
    Думайте об играх как о моделировании, где нормально обманывать. Если физика "достаточно хороша", чтобы казаться реальной затем, она хорошо для игр, и можно составить в пользовательском опыте, что Вы пропускаете с точки зрения точности. Игры обычно используют плавающую точку с одинарной точностью.

  3. Статистика
    Как научные приложения, для статистических методов нужна большая плавающая точка. Много численных методов является тем же; домен приложения просто отличается. Вы находите много статистических данных и моделирований Монте-Карло в финансовых приложениях и в любом поле, где Вы анализируете много данных исследования.

Плавающая точка не тривиальна, и для большинства бизнес-приложений Вы действительно не должны знать всю эту тонкость. Вы прекрасны просто знание, что Вы не можете представить некоторые десятичные числа точно в плавающей точке, и что, несомненно, необходимо будет использовать некоторый десятичный тип за цены и подобные вещи.

Если Вы действительно хотите войти в детали и понять все компромиссы и ловушки, проверить классика, Что Каждый Программист Должен Знать О Плавающей точке, или забирать книгу по Числовому Анализу или Прикладной Числовой Линейной алгебре, если Вы действительно предприимчивы.

3
ответ дан 13 December 2019 в 05:42
поделиться

Я предполагаю, что Вы имеете в виду "плавающую точку" здесь. Ответ является, в основном, любым временем, включенные количества приблизительны, измеряются, а не точны; любое время включенные количества больше, чем, может быть удобно представлено точно на базовой машине; любое время потребность в вычислительной скорости сокрушает точную точность; и любое время соответствующая точность может сохраняться без других сложностей.

Для получения дополнительной информации этого, действительно необходимо прочитать числовую аналитическую книгу.

3
ответ дан 13 December 2019 в 05:42
поделиться

Из Википедии:

Арифметика с плавающей точкой в своих лучших проявлениях, когда она просто используется для измерения реальных количеств по широкому спектру масштабов (таких как орбитальный период Io или масса протона), и в его худшем, когда она, как ожидают, смоделирует взаимодействия количеств, выраженных, поскольку десятичное число представляет в виде строки, которые, как ожидают, будут точны.

Плавающая точка быстра, но неточна. Если это - приемлемый компромисс, используйте плавающую точку.

0
ответ дан 13 December 2019 в 05:42
поделиться

Рассказ - то, что, если необходимо потребовать вычисления, НЕ ИСПОЛЬЗУЙТЕ плавающую точку.

Не используйте числа с плавающей точкой в качестве индексов цикла: не получайте пойманное выполнение:

for ( d = 0.1; d < 1.0; d+=0.1) 
{  /* Some Code... */ }

Вы будете удивлены.

Не используйте числа с плавающей точкой в качестве ключей ни к какому виду карты, потому что Вы никогда не можете рассчитывать на равенство, ведущее себя как Вы, может ожидать.

2
ответ дан 13 December 2019 в 05:42
поделиться

Уместно использовать типы с плавающей точкой при контакте с научными или статистическими вычислениями. Они будут неизменно только иметь, скажем, 3-8 значащих цифр точности.

Относительно того, использовать ли типы плавающей точки одинарной или двойной точности, это зависит от Вашей потребности в точности и в каком количестве значащих цифр Вы нуждаетесь. Обычно, хотя люди только заканчивают тем, что использовали, удваивается, если у них нет серьезного основания не к.

Например, при измерении расстояния или веса или физического количества как этот число, Вы придумываете, не точно: это имеет определенное число значащих цифр на основе точности Ваших инструментов и Ваших измерений.

Для вычислений, включающих что-либо как это, числа с плавающей точкой являются соответствующими.

Кроме того, если Вы имеете дело с типами плавающей точки иррациональных чисел, являются соответствующими (и действительно Ваш единственный выбор), например, линейная алгебра, где Вы имеете дело с квадратными корнями много.

Деньги отличаются, потому что обычно необходимо быть точными, и каждая цифра является значительной.

1
ответ дан 13 December 2019 в 05:42
поделиться

Большинство реальных количеств неточно, и обычно мы знаем их числовые свойства с намного меньшей точностью, чем типичное значение с плавающей точкой. Почти во всех случаях, плавании типов C и дважды достаточно хороши.

Необходимо знать некоторые ловушки. Например, тестирование двух чисел с плавающей запятой для равенства обычно не, что Вы хотите, начиная со всего оно взятия являются единственным битом погрешности для создания сравнения неравным. tgamblin обеспечил некоторые хорошие ссылки.

Обычным исключением являются деньги, которые вычисляются точно согласно определенным конвенциям, которые не переводят хорошо в двоичные представления. Часть этого является используемыми константами: Вы никогда не будете видеть процентную ставку % пи или процентную ставку на 22/7%, но Вы могли бы хорошо видеть процентную ставку на 3,14%. Другими словами, используемые числа обычно выражаются в точных десятичных дробях, не, все из которых являются точными двоичными дробями. Далее, округлением в вычислениях управляют конвенции, которые также не переводят хорошо в двоичный файл. Это делает чрезвычайно трудным точно копировать финансовые вычисления со стандартной плавающей точкой, и поэтому люди используют другие методы для них.

2
ответ дан 13 December 2019 в 05:42
поделиться

Я думаю, что необходимо спросить наоборот: когда должен Вы не использовать плавающую точку. Для большинства числовых задач плавающая точка является предпочтительным типом данных, как можно (почти) забыть о переполнении и другом виде проблем, с которыми обычно встречаются с целыми типами.

Один способ посмотреть на тип данных с плавающей запятой состоит в том, что точность независима от динамического, это - является ли число очень небольшим из очень больших (в допустимом диапазоне, конечно), количество значимых цифр является приблизительно тем же.

Один недостаток состоит в том, что числа с плавающей точкой имеют некоторые удивительные свойства, как x == x может быть Ложью (если x является nan), они не следуют большинству математических правил (дистрибутивность, которая является x (y + z)! = xy + xz). В зависимости от значений для z, y, и z, это может вопросы.

1
ответ дан 13 December 2019 в 05:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: