mirror of
https://gitee.com/chinabugotech/hutool.git
synced 2025-07-21 15:09:48 +08:00
fix convert bug
This commit is contained in:
@@ -77,6 +77,8 @@ import java.util.concurrent.atomic.AtomicIntegerArray;
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
import java.util.concurrent.atomic.AtomicLongArray;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
import java.util.concurrent.atomic.DoubleAdder;
|
||||
import java.util.concurrent.atomic.LongAdder;
|
||||
|
||||
/**
|
||||
* 转换器登记中心
|
||||
@@ -389,11 +391,13 @@ public class ConverterRegistry implements Serializable {
|
||||
defaultConverterMap.put(Integer.class, new NumberConverter(Integer.class));
|
||||
defaultConverterMap.put(AtomicInteger.class, new NumberConverter(AtomicInteger.class));// since 3.0.8
|
||||
defaultConverterMap.put(Long.class, new NumberConverter(Long.class));
|
||||
defaultConverterMap.put(LongAdder.class, new NumberConverter(LongAdder.class));
|
||||
defaultConverterMap.put(AtomicLong.class, new NumberConverter(AtomicLong.class));// since 3.0.8
|
||||
defaultConverterMap.put(Byte.class, new NumberConverter(Byte.class));
|
||||
defaultConverterMap.put(Short.class, new NumberConverter(Short.class));
|
||||
defaultConverterMap.put(Float.class, new NumberConverter(Float.class));
|
||||
defaultConverterMap.put(Double.class, new NumberConverter(Double.class));
|
||||
defaultConverterMap.put(DoubleAdder.class, new NumberConverter(DoubleAdder.class));
|
||||
defaultConverterMap.put(Character.class, new CharacterConverter());
|
||||
defaultConverterMap.put(Boolean.class, new BooleanConverter());
|
||||
defaultConverterMap.put(AtomicBoolean.class, new AtomicBooleanConverter());// since 3.0.8
|
||||
|
@@ -186,7 +186,7 @@ public class NumberConverter extends AbstractConverter<Number> {
|
||||
return StrUtil.isBlank(valueStr) ? null : NumberUtil.parseFloat(valueStr);
|
||||
} else if (Double.class == targetType) {
|
||||
if (value instanceof Number) {
|
||||
return ((Number) value).doubleValue();
|
||||
return NumberUtil.toDouble((Number) value);
|
||||
} else if (value instanceof Boolean) {
|
||||
return BooleanUtil.toDoubleObj((Boolean) value);
|
||||
}
|
||||
@@ -194,7 +194,7 @@ public class NumberConverter extends AbstractConverter<Number> {
|
||||
return StrUtil.isBlank(valueStr) ? null : NumberUtil.parseDouble(valueStr);
|
||||
} else if (DoubleAdder.class == targetType) {
|
||||
//jdk8 新增
|
||||
final Number number = convert(value, Long.class, toStrFunc);
|
||||
final Number number = convert(value, Double.class, toStrFunc);
|
||||
if (null != number) {
|
||||
final DoubleAdder doubleAdder = new DoubleAdder();
|
||||
doubleAdder.add(number.doubleValue());
|
||||
|
@@ -24,6 +24,7 @@ import java.util.Map;
|
||||
import java.util.Set;
|
||||
import java.util.concurrent.atomic.AtomicIntegerArray;
|
||||
import java.util.concurrent.atomic.AtomicLongArray;
|
||||
import java.util.concurrent.atomic.DoubleAdder;
|
||||
|
||||
/**
|
||||
* 类型转换工具单元测试
|
||||
@@ -361,4 +362,25 @@ public class ConvertTest {
|
||||
final float f = Convert.toFloat(value);
|
||||
Assert.assertEquals(406.1F, f, 2);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void floatToDoubleTest(){
|
||||
float a = 0.45f;
|
||||
double b = Convert.toDouble(a);
|
||||
Assert.assertEquals(a, b, 5);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void floatToDoubleAddrTest(){
|
||||
float a = 0.45f;
|
||||
final DoubleAdder adder = Convert.convert(DoubleAdder.class, a);
|
||||
Assert.assertEquals(a, adder.doubleValue(), 5);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void doubleToFloatTest(){
|
||||
double a = 0.45f;
|
||||
float b = Convert.toFloat(a);
|
||||
Assert.assertEquals(a, b, 5);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user