我正在编写一些代码,以用于导致问题的Xpath查询中。我正在尝试从列表中读取随机名称,但是float(x)偶尔会返回指数符号。

Random r = new Random();
float x = r.nextFloat();

final String expression = "(/list/name[@minLevel<=" + minLevel + "])" +
    "[(" + x + " * count(/list/name[@minLevel<=" + minLevel + "])) +1]";

有时,表达式等于:
(/name/list[@minLevel<=11])[(5.478859E-4 * count(/name/list[@minLevel<=11])) +1]

而且显然xpath不会使用指数表示法进行数学运算,因为我收到此错误:
javax.xml.transform.TransformerException: 5.478859E-4 could not be formatted to a number!

对于如何防止这种情况的任何帮助将不胜感激。

最佳答案

要转换浮点数,可以将 String.format() %f 用作格式说明符。这将永远不会使用科学计数法。

String.format("%f", x)

这也使您可以灵活地根据需要调整宽度和精度。

08-27 12:59