Форум программистов, компьютерный форум, киберфорум
Kotlin
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/18: Рейтинг темы: голосов - 18, средняя оценка - 4.83
0 / 0 / 0
Регистрация: 09.03.2021
Сообщений: 9

Почему Kotlin считает не так как калькулятор?

10.06.2021, 15:35. Показов 4020. Ответов 4

Студворк — интернет-сервис помощи студентам
Здравствуйте, надо посчитать 15% процентов от некоторого числа типа Double, к примеру 199.9. Калькулятор выдаёт 29,985, а котлин 29,985000000000000003. Как это можно исправить и почему это так работает?
Kotlin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
fun shippingCost(amount: Double, international: Boolean): Double {
    if(international == false)
    {
        if(amount > 75)
        {
            return 0.0
        }
        if (amount < 75)
        {
            return amount / 10
        }
    }
    else
    {
        if(amount <= 333.3)
        {
            return (amount / 100.0) * 15
        }
        if (amount > 333.3)
        {
            return 50.0
        }
    }
    return 0.0
}
fun main(args: Array<String>) {
    val total = readLine()!!.toDouble()
    val international = readLine()!!.toBoolean()
    println(shippingCost(total, international))
}
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
10.06.2021, 15:35
Ответы с готовыми решениями:

Почему в Kotlin так плохо устроена официальная API?
Привет всем ! Подскажите, ну почему так беспонтово сделана официальная API Kotlin, что толком ничего невозможно там найти? Может я что-то...

Разрядность переменных или каким образом так точно считает калькулятор Windows
Привет! Тут вот покоя не дает один вопрос. Думаю ни для кого не секрет, что не смотря на свою битность и соответственно возможное...

Почему не правильно считает что не так?
В данной программе я пытаюсь найти процентное отношение ассоциативного массива map&lt;string,int&gt;rezultat; rezultat=123421 из...

4
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
10.06.2021, 15:53
Цитата Сообщение от oleg1998 Посмотреть сообщение
почему это так работает?
https://en.wikipedia.org/wiki/... arithmetic

Цитата Сообщение от oleg1998 Посмотреть сообщение
Как это можно исправить
Округляй до нужного количества знаков(цифр) после запятой.
2
93 / 65 / 29
Регистрация: 22.11.2019
Сообщений: 232
10.06.2021, 15:54
так работает любой язык. смиритесь!)
при работе с Double всегда лучше округлять число.
0
Эксперт функциональных языков программированияЭксперт Java
 Аватар для korvin_
4575 / 2773 / 491
Регистрация: 28.04.2012
Сообщений: 8,760
10.06.2021, 16:23
Лучший ответ Сообщение было отмечено oleg1998 как решение

Решение

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import kotlin.math.round
 
fun shippingCost(amount: Double, international: Boolean): Double {
    if (international) {
        if (amount <= 333.3) {
            return (amount / 100.0) * 15
        }
        if (amount > 333.3) {
            return 50.0
        }
    } else {
        if (amount > 75) {
            return 0.0
        }
        if (amount < 75) {
            return amount / 10
        }
    }
    return 0.0
}
 
fun main(args: Array<String>) {
    val total = 199.9
    val international = true
    
    val cost = shippingCost(total, international)
    println(cost)
    println(round(cost * 1000) / 1000)
    println("%.3f".format(cost))
}
--- https://ideone.com/APK8YR

Code
1
2
3
29.985000000000003
29.985
29.985
Добавлено через 8 минут
Цитата Сообщение от XaXoLOL Посмотреть сообщение
так работает любой язык

Не по теме:

Не любой...

Кликните здесь для просмотра всего текста

Lisp
1
2
3
4
5
6
7
8
9
10
(defun shipping-cost (amount international)
  (if international
      (cond ((<= amount 333.3) (* amount 0.15))
            ((>  amount 333.3) 50))
      (cond ((> amount 75) 0)
            ((< amount 75) (/ amount 10))
            (t 0))))
 
(let ((cost (shipping-cost 199.9 t)))
  (format t "~a~%" cost))
--- https://ideone.com/7fbSmf
Code
1
29.985



Добавлено через 8 минут
oleg1998, кстати, если поменяешь (amount / 100) * 15 на amount * 0.15, то получишь своё число и без округлений: https://ideone.com/QUF4oo
1
0 / 0 / 0
Регистрация: 18.09.2022
Сообщений: 1
18.09.2022, 21:29
Kotlin
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
fun shippingCost(amount: Double, international: Boolean): Double {
    if (international == false ) {
   
      if (amount>75)
     {return 0.0 }
      if (amount<75)
      {return amount/10}
      }
   
   
      else 
      { 
      if ((amount*0.15)>50)
        {return 50.0}
        
      if ((amount*0.15)<50) 
        {return amount*0.15}
      }
    return 0.0
   
    
}
fun main(args: Array<String>) {
    val total = readLine()!!.toDouble()
    val international = readLine()!!.toBoolean()    
    println(shippingCost(total, international))
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.09.2022, 21:29
Помогаю со студенческими работами здесь

Почему время работы алгоритма считает не так?
Сделал программу для проверки времени выполнения алгоритмов сортировки. В итоге при запуске есть методы затратившие 0,00000 милисекунд, как...

Обьясните, почему код так странно считает факториалы
Добрый день, ув. форумчане. Есть код, считающий факториалы:#include &quot;stdio.h&quot; #include &quot;windows.h&quot; __int64 factorial(__int64 n)...

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

Почему так странно работает калькулятор
Здраствуйте, я сегодня решил взяться за C++, решил написать самое простое, калькулятор: #include &lt;cstdlib&gt; #include...

Я тут написал кое-как калькулятор, но появилась неполадка с решением, он не считает, а склеивает
unit Unit1; {$mode objfpc}{$H+} interface uses Classes, SysUtils, FileUtil, Forms, Controls, Graphics, Dialogs,...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
Фото: Daniel Greenwood
kumehtar 13.11.2025
Расскажи мне о Мире, бродяга
kumehtar 12.11.2025
— Расскажи мне о Мире, бродяга, Ты же видел моря и метели. Как сменялись короны и стяги, Как эпохи стрелою летели. - Этот мир — это крылья и горы, Снег и пламя, любовь и тревоги, И бескрайние. . .
PowerShell Snippets
iNNOKENTIY21 11.11.2025
Модуль PowerShell 5. 1+ : Snippets. psm1 У меня модуль расположен в пользовательской папке модулей, по умолчанию: \Documents\WindowsPowerShell\Modules\Snippets\ А в самом низу файла-профиля. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru