Попробуйте округлить 17,775 - PullRequest
2 голосов
/ 30 января 2020

Я испробовал почти все решения для округления до десятичных чисел, ни одно из них не работает

(round(100 * 17.775)/100)

Результаты, которые я получаю, составляют 17,77 Мне нужно 17,78 в результате округления

Пожалуйста, предоставьте мне решение.

* ПРИМЕЧАНИЕ. Этот вопрос относится только к раунду 17.775. Это означает, что решение не работает только для трех десятичных знаков, а 5 в конце [окончание 5 создает только проблему] * Заранее спасибо

Ответы [ 2 ]

2 голосов
/ 30 января 2020

Вот решение для проверки, если последнее число равно 5 или меньше 5, и выполните соответствующее действие

    let numberOfPlaces = 2.0
    let multiplier = pow(10.0, numberOfPlaces)
    let getLastNumberMultiplier = pow(10.0, numberOfPlaces+1)
    var num = 17.775
    let lastNumber = Int(num * getLastNumberMultiplier) % 10


    if lastNumber >= 5 {

        num = round(((num * multiplier ) + 1 ) ) / multiplier
    }
    else {

       num = round(num * multiplier) / multiplier
    }

    print(num)

enter image description here

enter image description here

0 голосов
/ 01 февраля 2020

Ребята, я перепробовал много ответов, и, наконец, я получил решение от одного из моих друзей.

Замена 'round' на 'roundf' решила проблему

let neededAnswer = Double((roundf(100 * Float(db))/100)) 

, то есть 17,775 17,78 и 17,774 до 17,77

Я хотел это, и это окончательный ответ.

Спасибо, ребята, за все ваши усилия, и если вы нашли какие-либо проблемы с этим ответом, пожалуйста, добавьте больше ответов / решений и поправь меня.

...