Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中带双精度的For循环_Java_For Loop_Double_Treemap_Double Precision - Fatal编程技术网

Java中带双精度的For循环

Java中带双精度的For循环,java,for-loop,double,treemap,double-precision,Java,For Loop,Double,Treemap,Double Precision,问题。我有一串双“0.4 0.3 2.1等”。 我需要在这个列表中循环并计算每个数字的出现次数 我曾经 StringTokenizer stokens=新的StringTokenizer(值); while(stokens.hasMoreTokens()){ Double tempKey=新的Double(stokens.nextToken()); 整数tempCount=orderValues.get(tempKey); if(tempCount==null) tempCount=1; 其他的

问题。我有一串双“0.4 0.3 2.1等”。 我需要在这个列表中循环并计算每个数字的出现次数

我曾经

StringTokenizer stokens=新的StringTokenizer(值);
while(stokens.hasMoreTokens()){
Double tempKey=新的Double(stokens.nextToken());
整数tempCount=orderValues.get(tempKey);
if(tempCount==null)
tempCount=1;
其他的
tempCount++;
orderValues.put(tempKey、tempCount);
}
其中values是字符串,orderValues是树映射

在此之后,我必须添加到树映射中所有缺失的值,从0到出现率为0的最大键值。 所以我用


用于(double i=0;i您使用的是原语double和类类型double,它们之间正在进行转换,因为它们都是浮点,所以您会看到浮点不精确。

您使用的是原语double和类类型double,它们之间正在进行转换,因为它们都是浮点y您会看到浮点不精确。

双精度类型的精度不足是众所周知的。通常,解决方案是使用BigDecimal。但是在您的特定情况下,由于每次迭代都要步进0.1,因此您也可以使用整数,并在需要时将其除以10

请注意,还应更改存储数据的方式。即,使用:

TreeMap<BigDecimal, Integer>

(or TreeMap<Integer, Integer>) instead of TreeMap<Double, Integer>
TreeMap
(或TreeMap)而不是TreeMap
另请参见BigDecimal的文档:
它不像double那样容易使用,但更安全。

众所周知,double类型缺乏精度。通常,解决方法是使用BigDecimal。但是在您的特定情况下,由于每次迭代都要步进0.1,因此也可以使用整数,并在需要时将其除以10

请注意,还应更改存储数据的方式。即,使用:

TreeMap<BigDecimal, Integer>

(or TreeMap<Integer, Integer>) instead of TreeMap<Double, Integer>
TreeMap
(或TreeMap)而不是TreeMap
另请参见BigDecimal的文档:
这并不像使用一样容易,但更安全。

在这张纸币上的可能复制品,看起来像是使用双倍作为地图的关键值,这是有点棘手的,因为浮点算术正是如此。也许你可能想考虑使用<代码> BigDecimal <代码>,而这也将解决你的迭代问题。这张纸币上的可复制副本,看起来像是使用双倍作为地图的关键值,这是有点棘手的,因为浮点算术正是如此。也许您可能想考虑使用<代码> BigDecimal <代码>,而这也将解决您的迭代问题。