diff --git a/pom.xml b/pom.xml
index 2fb651aac551abedc43be215fa80ab92f7afc088..0113434251b78c6556f34384e5965143e367c94c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
4.0.0
com.alibaba
easyexcel
- 3.0.0-beta2
+ 3.0.0-beta3
jar
easyexcel
diff --git a/src/main/java/com/alibaba/excel/converters/WriteConverterContext.java b/src/main/java/com/alibaba/excel/converters/WriteConverterContext.java
index 36ce56c646691063d57ec4d49973a6456f929624..cb01c773916ab1ba534bd7237f66e4558b1215e2 100644
--- a/src/main/java/com/alibaba/excel/converters/WriteConverterContext.java
+++ b/src/main/java/com/alibaba/excel/converters/WriteConverterContext.java
@@ -5,6 +5,7 @@ import com.alibaba.excel.metadata.property.ExcelContentProperty;
import lombok.AllArgsConstructor;
import lombok.Data;
+import lombok.NoArgsConstructor;
/**
* write converter context
@@ -12,6 +13,7 @@ import lombok.Data;
* @author Jiaju Zhuang
*/
@Data
+@NoArgsConstructor
@AllArgsConstructor
public class WriteConverterContext {
diff --git a/src/main/java/com/alibaba/excel/util/NumberUtils.java b/src/main/java/com/alibaba/excel/util/NumberUtils.java
index ea2635e6d0f03125955bd4e0790328e5ae20ac88..4226e9672168d3b974c62d6ac624f80c95514a95 100644
--- a/src/main/java/com/alibaba/excel/util/NumberUtils.java
+++ b/src/main/java/com/alibaba/excel/util/NumberUtils.java
@@ -58,7 +58,7 @@ public class NumberUtils {
* @return
*/
public static WriteCellData> formatToCellData(Number num, ExcelContentProperty contentProperty) {
- WriteCellData> cellData = new WriteCellData<>(BigDecimal.valueOf(num.doubleValue()));
+ WriteCellData> cellData = new WriteCellData<>(new BigDecimal(num.toString()));
if (contentProperty != null && contentProperty.getNumberFormatProperty() != null
&& StringUtils.isNotBlank(contentProperty.getNumberFormatProperty().getFormat())) {
WorkBookUtil.fillDataFormat(cellData, contentProperty.getNumberFormatProperty().getFormat(), null);
@@ -134,7 +134,7 @@ public class NumberUtils {
if (!hasFormat(contentProperty)) {
return new BigDecimal(string);
}
- return BigDecimal.valueOf(parse(string, contentProperty).doubleValue());
+ return new BigDecimal(parse(string, contentProperty).toString());
}
/**
diff --git a/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterTest.java b/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterTest.java
new file mode 100644
index 0000000000000000000000000000000000000000..05c91d13fc377a31b7bb07763956a1bef82ab045
--- /dev/null
+++ b/src/test/java/com/alibaba/easyexcel/test/core/converter/ConverterTest.java
@@ -0,0 +1,29 @@
+package com.alibaba.easyexcel.test.core.converter;
+
+import java.math.BigDecimal;
+
+import com.alibaba.excel.converters.WriteConverterContext;
+import com.alibaba.excel.converters.floatconverter.FloatNumberConverter;
+import com.alibaba.excel.metadata.data.WriteCellData;
+
+import org.junit.Assert;
+import org.junit.FixMethodOrder;
+import org.junit.Test;
+import org.junit.runners.MethodSorters;
+
+/**
+ * @author Jiaju Zhuang
+ */
+@FixMethodOrder(MethodSorters.NAME_ASCENDING)
+public class ConverterTest {
+
+ @Test
+ public void t01FloatNumberConverter() {
+ FloatNumberConverter floatNumberConverter = new FloatNumberConverter();
+ WriteConverterContext context = new WriteConverterContext<>();
+ context.setValue(95.62F);
+ WriteCellData> writeCellData = floatNumberConverter.convertToExcelData(context);
+ Assert.assertEquals(0, writeCellData.getNumberValue().compareTo(new BigDecimal("95.62")));
+ }
+
+}
diff --git a/update.md b/update.md
index 088ee95e0b704963f229c7ead22f3233ef7436d2..7a2cb56851ef2bff5eb71c97f94c9b74378295e6 100644
--- a/update.md
+++ b/update.md
@@ -1,3 +1,7 @@
+# 3.0.0-beta3
+
+* 修复导出浮点型数据可能精度异常的bug
+
# 3.0.0-beta2
* 优化写入样式