diff --git a/src/main/java/org/olat/ims/qti/process/elements/QTI_vargt.java b/src/main/java/org/olat/ims/qti/process/elements/QTI_vargt.java
index 7f0d2602bc1a4719803b5d9e8faffa081b0b9672..8b118b29c06d7cfaf568b0278f933b1d2eeb0ad2 100644
--- a/src/main/java/org/olat/ims/qti/process/elements/QTI_vargt.java
+++ b/src/main/java/org/olat/ims/qti/process/elements/QTI_vargt.java
@@ -44,7 +44,6 @@ public class QTI_vargt implements BooleanEvaluable {
 	 * @return
 	 */
 	public boolean eval(Element boolElement, ItemContext userContext, EvalContext ect) {
-		boolean ok = false;
 		ItemInput iinp = userContext.getItemInput();
 		if (iinp.isEmpty()) return false; // user has given no answer
 		String respident = boolElement.attributeValue("respident");
@@ -56,13 +55,21 @@ public class QTI_vargt implements BooleanEvaluable {
 		// Integer
 		shouldVal = shouldVal.trim();
 		isVal = isVal.trim();
+		float fs = Float.parseFloat(shouldVal);
+		float fi;
 		try {
-			Float fs = new Float(shouldVal);
-			Float fi = new Float(isVal);
-			ok = (fi.floatValue() > fs.floatValue());
-		} catch (NumberFormatException nfe) {
-			//  
+			fi = Float.parseFloat(isVal);
+		} catch (NumberFormatException e) {
+			//try to replace , -> .
+			isVal = isVal.replace(',', '.');
+			try {
+				fi = Float.parseFloat(isVal);
+			} catch (NumberFormatException e1) {
+				//we try all what we can to understand the input value -> false
+				return false;
+			}
 		}
+		boolean ok = (fi > fs);
 		return ok;
 	}
 
diff --git a/src/main/java/org/olat/ims/qti/process/elements/QTI_vargte.java b/src/main/java/org/olat/ims/qti/process/elements/QTI_vargte.java
index face4362d6fe88cd30090fde428c6b10ee48c053..83d69f04a1c2e7a8ba59560b2e5a98c8bd259fcc 100644
--- a/src/main/java/org/olat/ims/qti/process/elements/QTI_vargte.java
+++ b/src/main/java/org/olat/ims/qti/process/elements/QTI_vargte.java
@@ -51,10 +51,21 @@ public class QTI_vargte implements BooleanEvaluable {
 		// we use Float so we are on the safe side, even if comparison was only Integer
 		shouldVal = shouldVal.trim();
 		isVal = isVal.trim();
-		Float fs = new Float(shouldVal);
-		Float fi = new Float(isVal);
-		boolean ok = (fi.floatValue() >= fs.floatValue());
+		float fs = Float.parseFloat(shouldVal);
+		float fi;
+		try {
+			fi = Float.parseFloat(isVal);
+		} catch (NumberFormatException e) {
+			//try to replace , -> .
+			isVal = isVal.replace(',', '.');
+			try {
+				fi = Float.parseFloat(isVal);
+			} catch (NumberFormatException e1) {
+				//we try all what we can to understand the input value -> false
+				return false;
+			}
+		}
+		boolean ok = (fi >= fs);
 		return ok;
 	}
-
 }
diff --git a/src/main/java/org/olat/ims/qti/process/elements/QTI_varlt.java b/src/main/java/org/olat/ims/qti/process/elements/QTI_varlt.java
index 9e925913805cd1ca03325936ff1b2fdaed066f45..8d9a8cf581d371be4015c28af41b508f049e92e7 100644
--- a/src/main/java/org/olat/ims/qti/process/elements/QTI_varlt.java
+++ b/src/main/java/org/olat/ims/qti/process/elements/QTI_varlt.java
@@ -52,9 +52,22 @@ public class QTI_varlt implements BooleanEvaluable {
 		// we use Float so we are on the safe side, even if comparison was only Integer
 		shouldVal = shouldVal.trim();
 		isVal = isVal.trim();
-		Float fs = new Float(shouldVal);
-		Float fi = new Float(isVal);
-		boolean ok = (fi.floatValue() < fs.floatValue());
+		float fs = Float.parseFloat(shouldVal);
+		float fi;
+		try {
+			fi = Float.parseFloat(isVal);
+		} catch (NumberFormatException e) {
+			//try to replace , -> .
+			isVal = isVal.replace(',', '.');
+			try {
+				fi = Float.parseFloat(isVal);
+			} catch (NumberFormatException e1) {
+				//we try all what we can to understand the input value -> false
+				return false;
+			}
+		}
+		
+		boolean ok = (fi < fs);
 		return ok;
 	}
 
diff --git a/src/main/java/org/olat/ims/qti/process/elements/QTI_varlte.java b/src/main/java/org/olat/ims/qti/process/elements/QTI_varlte.java
index a6b2be2019ca03678360dac6e7c979177e5f3e2a..aa01acd165ef2fd17d47fb73225c64ac966dc6ef 100644
--- a/src/main/java/org/olat/ims/qti/process/elements/QTI_varlte.java
+++ b/src/main/java/org/olat/ims/qti/process/elements/QTI_varlte.java
@@ -52,9 +52,21 @@ public class QTI_varlte implements BooleanEvaluable {
 		// we use Float so we are on the safe side, even if comparison was only Integer
 		shouldVal = shouldVal.trim();
 		isVal = isVal.trim();
-		Float fs = new Float(shouldVal);
-		Float fi = new Float(isVal);
-		boolean ok = (fi.floatValue() <= fs.floatValue());
+		float fs = Float.parseFloat(shouldVal);
+		float fi;
+		try {
+			fi = Float.parseFloat(isVal);
+		} catch (NumberFormatException e) {
+			//try to replace , -> .
+			isVal = isVal.replace(',', '.');
+			try {
+				fi = Float.parseFloat(isVal);
+			} catch (NumberFormatException e1) {
+				//we try all what we can to understand the input value -> false
+				return false;
+			}
+		}
+		boolean ok = (fi <= fs);
 		return ok;
 	}