未验证 提交 088768f9 编写于 作者: 庄家钜's avatar 庄家钜 提交者: GitHub

Merge pull request #2081 from alibaba/developing

修复导出浮点型数据可能精度异常的bug
......@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>3.0.0-beta2</version>
<version>3.0.0-beta3</version>
<packaging>jar</packaging>
<name>easyexcel</name>
......
......@@ -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<T> {
......
......@@ -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());
}
/**
......
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<Float> context = new WriteConverterContext<>();
context.setValue(95.62F);
WriteCellData<?> writeCellData = floatNumberConverter.convertToExcelData(context);
Assert.assertEquals(0, writeCellData.getNumberValue().compareTo(new BigDecimal("95.62")));
}
}
# 3.0.0-beta3
* 修复导出浮点型数据可能精度异常的bug
# 3.0.0-beta2
* 优化写入样式
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册