繁体   English   中英

如何从Java(Selenium)中的十进制数字中删除不需要的零。但是,如果最后一位不是0,则应显示该数字

[英]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.199UI中和编号DB = 4.190显示为4.19UI中和编号DB = 4.100显示为4.1UI

当我断言时,硒认为4.1904.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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM