@ solution Opal as
est bonne, mais je voulais aussi mentionner que le JDK Groovy ajoute une vérification primitive pratique et les méthodes de conversion à CharSequence, qui met en œuvre à cordes:
isDouble
et asDobule
isFloat
et asFloat
- et
asLong
isInteger
et asInteger
Fait intéressant, il isFloat
semble être gourmand, retour true
pour les points flottant au-delà de sa gamme.
['2', '2.2', '2' * 10, "${Double.MAX_VALUE}"].each { s ->
switch (s) {
case { it.isInteger() }:
int i = s.toInteger()
println "String '$s' -> int $i"
break
case { it.isLong() }:
long l = s.toLong()
println "String '$s' -> long $l"
break
case { it.isFloat() }:
float f = s.toFloat()
println "String '$s' -> float $f"
break
case { it.isDouble() }:
double d = s.toDouble()
println "String '$s' -> double $d"
break
default:
println "$s is not a supported primitive"
}
}
imprime
String '2' -> int 2
String '2.2' -> float 2.2
String '2222222222' -> long 2222222222
String '1.7976931348623157E308' -> float Infinity
C'est exactement ce que je veux merci –
@SteevenBrunner, si c'est ce que vous avez besoin, s'il vous plaît accepter la réponse. – Opal