[英]How to remove unwanted zeros from decimal number in Java (Selenium).But if last digit is not 0 then it should be displayed
我正在从Teradata查询很多字段,并使用Selenium(Java)使用UI中显示的值进行验证。 我所有的字段都只有3个小数点。
对于例如,在DB总数= 4.199
显示为4.199
在UI
中和编号DB
= 4.190
显示为4.19
在UI
中和编号DB
= 4.100
显示为4.1
在UI
当我断言时,硒认为4.190
和4.19
是不同的。 我有很多这类领域,如何解决呢?
是否有其他功能(例如强制转换或舍入)可以按我想要的方式格式化数据?
您最好的选择是:
boolean areTheyEqual = new BigDecimal(a.toString()).compareTo(new BigDecimal(b.toString())) == 0;
这样,您将它们转换为BigDecimals,然后使用compareTo方法,该方法不考虑缩放比例(因此1.2与1.20相同)。
当我想进行此类操作时,通常使用BigDecimal
来存储小数。 这是一个使用stripTrailingZeros()
方法的示例:
BigDecimal b = new BigDecimal("2.210");
System.out.println(b.stripTrailingZeros());
//will print 2.21
您始终可以将值转换为BigDecimal,然后检查是否相等,将它们显示为所需格式的UI,等等。
当使用Selenium webElement.getText()
,返回的是字符串,并且当您将2.19与2.190组合时,两者都不相同,因此断言将失败。
我们可以尝试将String转换为Integer并执行Assert动作吗?
int num = Integer.parseInt(webElement.getText());
现在num中存储的值是Int类型,因此您可以使用另一个Int进行断言。
否则,您可以接受上面的建议(使用BigDecimal)
由于大十进制对我不起作用,我正在寻找一个正则表达式,并在下面的链接中找到它, 在Java中删除尾随零
它的工作完美。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.