在Kotlin中,如何制作计算税收或增值税的函数?
在Kotlin中,我如何制作一个函数来计算我之前输入的价格的税费或增值税? 例如:我输入一个数字(467),从这个数字中我想得到与税的总和。在希腊,我们有24%的税收或增值税在Kotlin中,如何制作计算税收或增值税的函数?,kotlin,intellij-idea,Kotlin,Intellij Idea,在Kotlin中,我如何制作一个函数来计算我之前输入的价格的税费或增值税? 例如:我输入一个数字(467),从这个数字中我想得到与税的总和。在希腊,我们有24%的税收或增值税 fun main(args: Array<String>) { var input = readLine() println(tax(0.24)) } fun tax(x: Double): Double { return 0.24 * x } fun main(args:Array)
fun main(args: Array<String>) {
var input = readLine()
println(tax(0.24))
}
fun tax(x: Double): Double {
return 0.24 * x
}
fun main(args:Array){
var input=readLine()
印花税(税率(0.24))
}
娱乐税(双倍):双倍{
返回0.24*x
}
最后,我希望在开始时输入价格,例如467*24%您可以这样做:
fun readLn() = readLine()!!
fun readNumAndCalcGreekTax() {
println("Enter a number")
val userInput = readLn().toInt()
val userInputPlusTax = userInput * 1.24
println("For $userInput plus %24 tax: Total: $userInputPlusTax")
}
readNumAndCalcGreekTax()
val TAX_RATE = BigDecimal("0.24")
fun main(args: Array<String>) {
println("Enter the price:")
val input = readLine()
if (input != null) {
val price = input.toBigDecimal()
val taxPercentage = TAX_RATE.scaleByPowerOfTen(2)
println("€$price * tax @ $taxPercentage% = €${tax(price)}")
}
}
fun tax(x: BigDecimal) = TAX_RATE * x
输出将是
Enter a number
460
For 460 plus %24 tax: Total: 570.4
我可能误解了这个问题,因为它看起来很基本 问题中的代码将用户的一个数字读入变量
input
,但对它没有任何作用。因此我怀疑您要做的是println(tax(input))
但是,如果您尝试这样做,您将得到一个编译错误:
Type mismatch.
Required: Double
Found: String?
input
是一个字符串(如果文件结尾,则为null),但是您的tax()
函数需要一个双精度的
数字。因此,您需要做的是将字符串转换为数字。最简单的方法是调用字符串的方法
如果这样做,您将获得另一个编译器错误,因为您没有处理输入可能为null的可能性(并且您不能对null调用toDouble()
),因此您必须首先检查该错误,例如:
if (input != null)
println(tax(input.toDouble())
我想这就是你想要的
但还有许多值得改进的地方,例如:
- 例如,Double
,因为它不能准确地存储小数点。(它在显示时四舍五入到最接近的小数点,这通常会掩盖问题,但它会以许多微妙的方式咬你。)相反,你可以使用没有问题的类型
税率应该是恒定的,所以你不必在其他地方重复
你可以给用户一个提示,然后在输出中使用一个额外的信息(正如@Sid所建议的那样)。在这种情况下,最好存储价格以避免转换两次
由于在创建input
之后没有修改它,因此将其设置为不可变的val
比设置为var
更安全
您可以使用tax()
函数中较短的一个
有了所有这些变化,它可能看起来像这样:
fun readLn() = readLine()!!
fun readNumAndCalcGreekTax() {
println("Enter a number")
val userInput = readLn().toInt()
val userInputPlusTax = userInput * 1.24
println("For $userInput plus %24 tax: Total: $userInputPlusTax")
}
readNumAndCalcGreekTax()
val TAX_RATE = BigDecimal("0.24")
fun main(args: Array<String>) {
println("Enter the price:")
val input = readLine()
if (input != null) {
val price = input.toBigDecimal()
val taxPercentage = TAX_RATE.scaleByPowerOfTen(2)
println("€$price * tax @ $taxPercentage% = €${tax(price)}")
}
}
fun tax(x: BigDecimal) = TAX_RATE * x
val TAX\u RATE=BigDecimal(“0.24”)
趣味主线(args:Array){
println(“输入价格:”)
val input=readLine()
如果(输入!=null){
val price=input.toBigDecimal()
val taxPercentage=税率。比例功率(2)
println(€$price*tax@$taxPercentage%=€${tax(price)})
}
}
乐趣税(x:BigDecimal)=税率*x
我假设价格是欧元;在更复杂的程序中,货币可能会随价格一起传递/输入。而在实践中,税收计算通常要复杂得多(例如,处理不同税率、零税率或免税的项目,并且根据买家的身份,可能不需要纳税)
(顺便说一句,“tax”不是缩写,所以通常不大写。)你可以在Kotlin中尝试字符串格式,你能给我一个上面提供的代码的例子吗?这非常“干净”!非常感谢@Lolos没问题,请记住验证输入toInt()
例如可能会抛出NumberFormatException
实际上您上面写的比我正在学习的课程要好!非常感谢您提供的信息和您的知识,我非常感谢。