[英]how to validate float against specific format in java?
我想驗證浮點類型數據。 我將規則定義為
int precision1 = 3;
int precision2 = 2;
上述規則表示數據格式應為999.99
預期的1234.56驗證應因上述規則而失敗。 同樣,對於上述規則中的浮點數123.456,預期的驗證也將失敗。 預期的123.33驗證應該成功。
關於驗證過程的任何想法將不勝感激。
謝謝凱基
快速又骯臟:
int precision1 = 3;
int precision2 = 2;
float var = 123.12f;
String varStr = String.valueOf(var);
if (varStr.length() == (precision1 + precision2 + 1) && varStr.indexOf(".") == precision1) {
System.out.println(true);
} else {
System.out.println(false);
}
用戶輸入一個String,將其轉換為float,然后嘗試驗證float。 你不能那樣做。
浮點數的字符串表示形式是人為產物。 另外,浮點數往往只近似(非常接近)轉換后的String的值。
如果要驗證精度,唯一的方法是驗證用戶輸入的String。 如果要保持精度,請像字符串一樣存儲它。
例如,如果您需要一個數字進行計算,請使用BigDecimal 。 它旨在將精度保持在給定的精確度(對於財務計算很重要)。 它們不是很好用,但是如果您需要精確的非整數值,那就是您要付出的代價。
編輯
如何使用BigDecimal。
BigDecimal b1 = new BigDecimal("1234.23");
System.out.println(b1 + " scale was " + b1.scale()); 2
BigDecimal b2 = new BigDecimal("1234.523536223");
System.out.println(b2 + " scale was " + b2.scale()); // 9
您顯然可以通過使用秤來測試“精度”。 如果b1.scale()== 2 || b1.scale()== 3 =>有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.