Skip to content

Commit a576d4a

Browse files
Merge pull request #325 from InseeFr/devBigNumberFix
fix: Number in exponential format
2 parents f9b5399 + 9a6a314 commit a576d4a

File tree

3 files changed

+52
-1
lines changed

3 files changed

+52
-1
lines changed

CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
# Changelog
2+
## 1.12.2 [TODO]
3+
### Fixed
4+
- Scientific notation for Doubles during raw data processing
5+
26
## 1.12.0 [2025-10-23]
37
- Get review indicator endpoint
48

src/main/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataService.java

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
import org.springframework.stereotype.Service;
3737

3838
import java.io.IOException;
39+
import java.math.BigDecimal;
3940
import java.time.Instant;
4041
import java.time.LocalDateTime;
4142
import java.util.ArrayList;
@@ -389,7 +390,7 @@ private static void convertToCollectedVar(
389390
// scalaire non null ?
390391
if (value != null && !(value instanceof List<?>)) {
391392
// idem: on garde convertOneVar(entry, String, ...)
392-
convertOneVar(collectedVariable, String.valueOf(value), variablesMap, 1, dest);
393+
convertOneVar(collectedVariable, getValueString(value), variablesMap, 1, dest);
393394
}
394395
}
395396
}
@@ -462,4 +463,15 @@ public Page<LunaticJsonRawDataModel> findRawDataByCampaignIdAndDate(String campa
462463

463464
}
464465

466+
//Utils
467+
protected static String getValueString(Object value) {
468+
if (value instanceof Double || value instanceof Float) {
469+
BigDecimal bd = new BigDecimal(value.toString());
470+
return bd.stripTrailingZeros().toPlainString();
471+
}
472+
if (value instanceof Number) {
473+
return value.toString();
474+
}
475+
return String.valueOf(value);
476+
}
465477
}

src/test/java/fr/insee/genesis/domain/service/rawdata/LunaticJsonRawDataServiceTest.java

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import java.util.List;
3434
import java.util.Map;
3535

36+
import static fr.insee.genesis.domain.service.rawdata.LunaticJsonRawDataService.getValueString;
3637
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
3738

3839
class LunaticJsonRawDataServiceTest {
@@ -570,4 +571,38 @@ private List<String> prepareConvertTest(int rawDataSize, String campaignId, Stri
570571
}
571572
return interrogationIdList;
572573
}
574+
575+
@Test
576+
void getValueString_null_test(){
577+
Object stringObject = null;
578+
579+
Assertions.assertThat(getValueString(stringObject)).isEqualTo("null");
580+
}
581+
582+
@Test
583+
void getValueString_string_test(){
584+
Object stringObject = "test";
585+
586+
Assertions.assertThat(getValueString(stringObject)).isEqualTo("test");
587+
}
588+
@Test
589+
void getValueString_int_test(){
590+
Object intObject = 10;
591+
592+
Assertions.assertThat(getValueString(intObject)).isEqualTo("10");
593+
}
594+
595+
@Test
596+
void getValueString_float_test(){
597+
Object floatObject = 10.111f;
598+
599+
Assertions.assertThat(getValueString(floatObject)).isEqualTo("10.111");
600+
}
601+
602+
@Test
603+
void getValueString_double_test(){
604+
Object doubleObject = 101010101010.111d;
605+
606+
Assertions.assertThat(getValueString(doubleObject)).isEqualTo("101010101010.111");
607+
}
573608
}

0 commit comments

Comments
 (0)