Я пишу простую функцию для вычисления стоимости мешка с монетами. Он потребляет четыре цифры: количество пенни, никеля, копейки и четверти в сумке; он производит сумму денег в сумке.Неправильный расчет с использованием типа Scala Int и Double
Вот функция:
scala> def sum_coins(penny:Int=0, nickel:Int=0, dime:Int=0, quarter:Int=0) = { penny * (0.01) + nickel * 0.05 + dime * 0.1 + quarter * 0.25 }
Почему результат выглядит так?
scala> sum_coins(1,1,1,1)
res13: Double = 0.41000000000000003
Я ожидаю, что результат должен быть 0,41
'0.01',' 0.05', '0.1',' 0.25' литералы 'Double' по умолчанию, используйте' Decimal' вместо –
Возможный дубликат (HTTP [Является плавающей точкой математике сломана?]://stackoverflow.com/questions/588004/is-floating-point-math-broken) –