【发布时间】:2022-01-10 06:14:16
【问题描述】:
这是一个找零计数器程序。更改计数正确,但余数不正确 (remChange())。在观看了一些视频和 w3schools 教程之后,我仍然对这是为什么一无所知。我在每个函数的底部添加了一个 returnChange,并且能够将最后 2 个函数四舍五入(从浮点数)。我在println中做错了浮点数吗?我的退货标签放错地方了吗?我只是想通过数硬币并把零钱还给我来让它发挥作用。
这是我的代码:让我知道,同时我正在研究。
fun main(args: Array<String>) {
var change = 10.88
getDollars(change)
getQuarters(change)
getDimes(change)
getNickles(change)
}
fun getDollars(change: Double): Double{
val numofdolla = change/(1.00).toFloat();
println(numofdolla.toInt());
val remChange = change - numofdolla * 1.00;
println(remChange)
return change
}
fun getQuarters(change: Double): Double{
val numofqtr = change/(0.25).toFloat();
println(numofqtr.toInt());
val remChange = change - numofqtr * 0.25;
println(remChange)
return change
}
fun getDimes(change: Double): Double{
val numofdime = change/(0.10).toFloat();
println(numofdime.toInt());
val remChange = change - numofdime * 0.10;
println("%.2f".format(remChange))
return change
}
fun getNickles(change: Double): Double{
val numofnick = change/(0.05).toFloat();
println(numofnick.toInt());
val remChange = change - numofnick * 0.05;
println("%.2f".format(remChange))
return change
}
我不是在寻找任何人来编写我的代码,因为这样的解释会很完美。
【问题讨论】:
-
当您可以以美分计算并使用精确整数时,为什么要以美元计算(它需要浮点值,而这些浮点值本质上不能准确地表示小数)? (或者,如果您出于某种原因确实需要美元,您可以使用
BigDecimals)。 -
我什至不知道那是一回事!谢谢!我不知道。我在网上自学,所以我不知道我不知道什么,但我会研究精确的整数。
-
'precise' 是描述,而不是类型名称 :-) 我的意思是您可以使用
Int(或其他整数类型Long、Short、&c),它有没有不准确或四舍五入的问题。浮点会引起很多混乱,很多人在不合适的地方使用它; this question 可能是该主题中最受欢迎的。 -
那么,如果我理解正确,你是在告诉我 toFloat 导致我的输出没有返回应有的问题吗?