Я не уверен, что это хороший способ справиться с этим, но я использую следующее в моем проекте.
У меня есть переменная «double theRelevantNumber» и «int PowerOfTen» для каждого элемента, а в моем соответствующем классе у меня есть переменная «int relatedDecimals».
Итак ... когда встречаются большие числа, они обрабатываются так:
Сначала они меняются на x, yyy форму. Таким образом, если было введено число 123456 789 и «powerOfTen» равнялось 10, оно начиналось бы так:
theRelevantNumber = 123456,789
PowerOfTen = 10
Номер был тогда: 123456,789 * 10 ^ 10
Затем оно изменяется на:
1,23456789 * 10 ^ 15
Затем он округляется числом соответствующих десятичных знаков (например, 5) до 1,23456, а затем сохраняется вместе с «PowerOfTen = 15»
При сложении или вычитании чисел любое число за пределами соответствующих десятичных знаков игнорируется. Значение, если вы берете:
1 * 10 ^ 15 + 1 * 10 ^ 10 он изменится на 1,00001, если значение «релевантные» равно 5, но не изменится, если значение «релевантные значения» равно 4.
Этот метод позволяет вам без проблем иметь дело с числами вплоть до doubleLimit * 10 ^ intLimit, и, по крайней мере, для ООП это не так сложно отследить.