diff --git a/convert-float-to-bigdecimal/README.md b/convert-float-to-bigdecimal/README.md
new file mode 100644
index 0000000000..e01c981831
--- /dev/null
+++ b/convert-float-to-bigdecimal/README.md
@@ -0,0 +1,7 @@
+## Shallow vs Deep Copy
+
+This module contains an article about converting float to BigDecimal in Java
+
+### Relevant articles:
+
+- [Converting from Float to BigDecimal in Java](https://drafts.baeldung.com/?p=175240&preview=true)
diff --git a/convert-float-to-bigdecimal/pom.xml b/convert-float-to-bigdecimal/pom.xml
new file mode 100644
index 0000000000..8fa20b300f
--- /dev/null
+++ b/convert-float-to-bigdecimal/pom.xml
@@ -0,0 +1,16 @@
+
+
+ 4.0.0
+ convert-float-to-bigdecimal
+ convert-float-to-bigdecimal
+ jar
+
+
+ com.baeldung
+ parent-modules
+ 1.0.0-SNAPSHOT
+
+
+
\ No newline at end of file
diff --git a/convert-float-to-bigdecimal/src/main/resources/logback.xml b/convert-float-to-bigdecimal/src/main/resources/logback.xml
new file mode 100644
index 0000000000..830ab22727
--- /dev/null
+++ b/convert-float-to-bigdecimal/src/main/resources/logback.xml
@@ -0,0 +1,14 @@
+
+
+
+
+ %d{HH:mm:ss.SSS} [%thread] %-5level %logger{36} - %msg%n
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/convert-float-to-bigdecimal/src/test/java/com/baeldung/convertfloattobigdecimal/ConvertFloatToBigDecimalUnitTest.java b/convert-float-to-bigdecimal/src/test/java/com/baeldung/convertfloattobigdecimal/ConvertFloatToBigDecimalUnitTest.java
new file mode 100644
index 0000000000..c43d2ab87a
--- /dev/null
+++ b/convert-float-to-bigdecimal/src/test/java/com/baeldung/convertfloattobigdecimal/ConvertFloatToBigDecimalUnitTest.java
@@ -0,0 +1,48 @@
+package com.baeldung.convertfloattobigdecimal;
+
+import static org.junit.jupiter.api.Assertions.assertEquals;
+import static org.junit.jupiter.api.Assertions.assertNotEquals;
+
+import java.math.BigDecimal;
+
+import org.junit.jupiter.api.Test;
+
+class ConvertFloatToBigDecimalUnitTest {
+
+ @Test
+ public void whenFloatComparedWithDifferentValues_thenCouldMatch() {
+ assertNotEquals(1.1f, 1.09f);
+ assertEquals(1.1f, 1.09999999f);
+ }
+
+ @Test
+ public void whenCreatedFromFloat_thenCouldNotMatch() {
+ float floatToConvert = 0.5f;
+ BigDecimal bdFromFloat = new BigDecimal(floatToConvert);
+ assertEquals("0.5", bdFromFloat.toString());
+ floatToConvert = 1.1f;
+ bdFromFloat = new BigDecimal(floatToConvert);
+ assertNotEquals("1.1", bdFromFloat.toString());
+ }
+
+ @Test
+ public void whenCreatedFromString_thenMatches() {
+ String floatValue = Float.toString(1.1f);
+ BigDecimal bdFromString = new BigDecimal(floatValue);
+ assertEquals("1.1", bdFromString.toString());
+ }
+
+ @Test
+ public void whenCreatedByValueOfAndIsFloat_thenDoesNotMatch() {
+ float floatToConvert = 1.1f;
+ BigDecimal bdByValueOf = BigDecimal.valueOf(floatToConvert);
+ assertNotEquals("1.1", bdByValueOf.toString());
+ }
+
+ @Test
+ public void whenCreatedByValueOfAndIsDouble_thenMatches() {
+ double doubleToConvert = 1.1d;
+ BigDecimal bdByValueOf = BigDecimal.valueOf(doubleToConvert);
+ assertEquals("1.1", bdByValueOf.toString());
+ }
+}