Gamas en Kotlin con el tipo de datos doble

fun calcInterest(amount: Double, interest: Double): Double { return(amount *(interest/100.0)) } fun main(args: Array<String>) { for (i in 1.0..2.0 step .5) { println("&10,000 at 5% interest is = ${calcInterest(10000.0,i)}") } } 

Aparece el error que dice que el range For-loop debe tener un método 'Iterator ()'. Subraya mis dobles en la sección (i en 1.0..2.0)

¿Cómo puedo usar dobles en un range? Un website en Ranges Reloaded ( https://blog.jetbrains.com/kotlin/2013/02/ranges-reloaded/ ) muestra que usar el tipo de datos Double está bien. No sé lo que está mal con el mío. Necesito usar dobles por el hecho de que mis tasas de interés están usando decimales. Completamente nuevo para la progtwigción, así que con suerte alguien puede explicarlo simplemente. ¡Gracias!

Editar: paso agregado .5

De acuerdo con la documentation de ranges :

Los numbers de coma flotantes ( Double , Float ) no definen su operador de rangeTo , y en su lugar se rangeTo el proporcionado por la biblioteca estándar para los types comparables generics.

 public operator fun <T: Comparable<T>> T.rangeTo(that: T): ClosedRange<T> 

El range devuelto por esta function no se puede usar para la iteración.

Deberá usar algún otro tipo de ciclo ya que no puede usar ranges.

A partir de Kotlin 1.1, un ClosedRange<Double> "no se puede usar para iteración" ( rangeTo() – Funciones de utilidad – Rangos – Kotlin Programming Language ).

Sin embargo, puede definir su propia function de extensión de step para esto. p.ej:

 infix fun ClosedRange<Double>.step(step: Double): Iterable<Double> { require(start.isFinite()) require(endInclusive.isFinite()) require(step > 0.0) { "Step must be positive, was: $step." } val sequence = generateSequence(start) { previous -> if (previous == Double.POSITIVE_INFINITY) return@generateSequence null val next = previous + step if (next > endInclusive) null else next } return sequence.asIterable() } 

Aunque puede hacer esto si trabaja con dinero, no debería usar Double (o Float ). Consulte Prácticas de Java -> Representación del dinero .