Я предполагаю, что число 8 является опечаткой и должно быть 6. Вы никогда не сможете заставить этот код работать постоянно, как есть, тип double может хранить только 15 значащих цифр.Все, что за пределами, это просто шум.Вам нужно избавиться от цифр шума.
Кроме того, очень маловероятно, что вы получите точно такие же цифры шума при расчете в C # против Objective-C.Они используют FPU по-разному, оставляя промежуточные результаты в FPU в разное время.У этих посредников есть более значимые цифры.
Произвольный способ фильтрации цифр шума:
int retVal = Math.Abs(allAfterDecimal).ToString("N12").Trim('0').Length - 1;
Спецификатор формата N12 гарантирует, что во фракции может быть только 12 цифр, отсекаяшум.Его «подходящее» значение сильно зависит от величины числа.По сути, этот фрагмент кода имеет недостатки, поскольку предполагает, что тип double не имеет проблем с округлением.Оно делает.Причина номер один, что существует тип decimal .Пока вы застряли с двойным, важно, чтобы вы делали это по-другому.Я не могу догадаться, почему ты это делаешь.