diff --git a/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/CreateCustomNumberFormat.java b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/CreateCustomNumberFormat.java
new file mode 100644
index 0000000000000000000000000000000000000000..4ed8f9c41bd0fe29e48c18bebb8d67bf95542965
--- /dev/null
+++ b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/CreateCustomNumberFormat.java
@@ -0,0 +1,24 @@
+package de.hdm_stuttgart.sd1;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.util.Locale;
+
+public class CreateCustomNumberFormat {
+
+  public static void main(String[] args) {
+
+    final DecimalFormatSymbols unusualSymbols = new DecimalFormatSymbols(Locale.getDefault());
+    unusualSymbols.setDecimalSeparator('|');
+    unusualSymbols.setGroupingSeparator('^');
+
+    final String strange = "#,##0.###";
+    final DecimalFormat weirdFormatter = new DecimalFormat(strange, unusualSymbols);
+    weirdFormatter.setGroupingSize(4);
+
+    String bizarre = weirdFormatter.format(12345.678);
+    System.out.println(bizarre);
+
+  }
+}
diff --git a/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/GetAvailableLocales.java b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/GetAvailableLocales.java
new file mode 100644
index 0000000000000000000000000000000000000000..246f4be9d3f8c38729d65f12861430ee68f3c0ff
--- /dev/null
+++ b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/GetAvailableLocales.java
@@ -0,0 +1,15 @@
+package de.hdm_stuttgart.sd1;
+
+import java.util.Locale;
+import java.util.Scanner;
+
+public class GetAvailableLocales {
+
+  public static void main(String[] args) {
+
+    System.out.println(Locale.getAvailableLocales().length + " locales available:");
+    for (final Locale l: Locale.getAvailableLocales()) {
+      System.out.println("Locale: " + l.getDisplayLanguage() + "(" + l + ")");
+    }
+  }
+}
diff --git a/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/GetNumberFormatInstance.java b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/GetNumberFormatInstance.java
new file mode 100644
index 0000000000000000000000000000000000000000..8c6d82801a7b11872aa118f9d427701325558894
--- /dev/null
+++ b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/GetNumberFormatInstance.java
@@ -0,0 +1,18 @@
+package de.hdm_stuttgart.sd1;
+
+import java.text.DecimalFormat;
+import java.text.NumberFormat;
+import java.util.Locale;
+
+public class GetNumberFormatInstance {
+
+  public static void main(String[] args) {
+
+    final NumberFormat standard = new DecimalFormat(); // Default locale
+    System.out.println(standard.format(1234.5678));
+
+    final NumberFormat de = DecimalFormat.getInstance(Locale.GERMANY);
+    System.out.println(de.format(1234.5678));
+
+  }
+}
diff --git a/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/PolymorphicNumberParsing.java b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/PolymorphicNumberParsing.java
new file mode 100644
index 0000000000000000000000000000000000000000..6f357105a560d53986dcb3a385c8409d270fc18b
--- /dev/null
+++ b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/PolymorphicNumberParsing.java
@@ -0,0 +1,26 @@
+package de.hdm_stuttgart.sd1;
+
+import java.text.DecimalFormat;
+import java.text.DecimalFormatSymbols;
+import java.text.NumberFormat;
+import java.text.ParseException;
+import java.util.Locale;
+
+public class PolymorphicNumberParsing {
+
+  public static void main(String[] args) {
+
+    final NumberFormat de = NumberFormat.getInstance(Locale.GERMANY);
+    try {
+      final Number[] values = {
+          de.parse("103.234"),
+          de.parse("400.000,234")};
+
+      for (final Number n: values) {
+        System.out.println(n + "(" + n.getClass().getTypeName() + ")");
+      }
+    } catch (ParseException e) {
+      e.printStackTrace();
+    }
+  }
+}
diff --git a/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/RandomExample.java b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/RandomExample.java
new file mode 100644
index 0000000000000000000000000000000000000000..d930a381fe783f8898319629bc27336353d39079
--- /dev/null
+++ b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/RandomExample.java
@@ -0,0 +1,26 @@
+package de.hdm_stuttgart.sd1;
+
+import java.util.Random;
+import java.util.Scanner;
+
+public class RandomExample {
+
+  public static void main(String[] args) {
+
+
+    try(final Scanner scanner = new Scanner(System.in)) {
+      System.out.print("Enter an integer seed:");
+      final long seed = scanner.nextLong();
+
+      Random generator = new Random(seed);
+      for (int i = 0; i < 10; i++) {
+        System.out.print(generator.nextBoolean() + " ");
+      }
+    }
+
+  }
+
+
+
+
+}
diff --git a/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/RoundingProblem.java b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/RoundingProblem.java
new file mode 100644
index 0000000000000000000000000000000000000000..49798c10af83e0d24b29603ee4a71fdd574b4148
--- /dev/null
+++ b/Doc/Sd1/Ref/WorkingWithNumbers/P/src/main/java/de/hdm_stuttgart/sd1/RoundingProblem.java
@@ -0,0 +1,34 @@
+package de.hdm_stuttgart.sd1;
+
+import java.math.BigDecimal;
+
+public class RoundingProblem {
+
+  public static void main(String[] args) {
+    f();
+    d();
+    bd();
+  }
+
+  static void f() {
+    final float result = 0.99f - 0.1f -0.1f -0.1f;
+    System.out.println(result);
+  }
+  static void d() {
+    final double result = 0.99 - 0.1 -0.1 -0.1;
+    System.out.println(result);
+  }
+
+  static void bd() {
+    final BigDecimal zero_dot_99 = new BigDecimal("0.99");
+    final BigDecimal zero_dot_1 = new BigDecimal("0.1");
+
+    BigDecimal result = zero_dot_99.
+        subtract(zero_dot_1).
+        subtract(zero_dot_1).
+        subtract(zero_dot_1);
+
+    System.out.println(result);
+  }
+
+}
diff --git a/Doc/Sd1/workingWithNumbers.xml b/Doc/Sd1/workingWithNumbers.xml
index 630dc0ff29745625adb40b0df19e671d41b93a65..e16e22e82bf0df611e99815dd3af3e30513c95ad 100644
--- a/Doc/Sd1/workingWithNumbers.xml
+++ b/Doc/Sd1/workingWithNumbers.xml
@@ -21,12 +21,12 @@
       of integer values</title>
 
       <informaltable border="0">
-        <colgroup width="83%"/>
+        <colgroup width="87%"/>
 
-        <colgroup width="17%"/>
+        <colgroup width="13%"/>
 
         <tr>
-          <td valign="top"><programlisting language="java">final Stack&lt;Integer&gt; values = new Stack&lt;&gt;();
+          <td valign="top"><programlisting language="java">final Stack&lt;Integer&gt; values = new Stack&lt;&gt;();     
 
 values.push(3);
 values.push(1);
@@ -91,7 +91,7 @@ values.push(1);
 values.push(10);
 
 while (!values.empty()) {
-  System.out.println(values.pop().
+  System.out.println(values.pop().   
      getClass().getTypeName());
 }</programlisting></td>
 
@@ -205,9 +205,7 @@ int iPrimitiveFromInteger = <co linkends="sd1_numbers_fig_conventional-3"
     </informaltable>
 
     <figure xml:id="sd1_numbers_fig_stackBoxUnboxVsConventional">
-      <title><classname
-      xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Stack.html">Stack</classname>
-      usage comparison</title>
+      <title>Boxing syntax comparison</title>
 
       <informaltable border="0">
         <colgroup width="50%"/>
@@ -223,7 +221,8 @@ values.push(Integer.valueOf(1));
 values.push(Integer.valueOf(10));
 
 while (!values.empty()) {
-  System.out.println(values.pop().intValue());
+  System.out.println(values.pop().    
+     intValue()); 
 }</programlisting></td>
 
           <td valign="top"><programlisting language="java">final Stack&lt;Integer&gt; values =
@@ -234,7 +233,7 @@ values.push(1);
 values.push(10);
 
 while (!values.empty()) {
-  System.out.println(values.pop());
+  System.out.println(values.pop());   
 }</programlisting></td>
         </tr>
       </informaltable>
@@ -245,7 +244,7 @@ while (!values.empty()) {
     <title>Number Parsing</title>
 
     <figure xml:id="sd1_numbers_fig_parseIntegerString">
-      <title> Parsing <classname
+      <title>Parsing <classname
       xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html">Integer</classname>
       user input</title>
 
@@ -344,10 +343,12 @@ not an integer.</screen></td>
         <colgroup width="50%"/>
 
         <tr>
-          <td valign="top"><programlisting language="java">final int value = Integer.parseInt("1101", 2);
-System.out.println("Value: " + value);</programlisting><screen>Value: 13</screen></td>
+          <td valign="top"><programlisting language="java">final int value = 
+   Integer.parseInt("1101", 2);
+System.out.println("Value: " + value);    </programlisting><screen>Value: 13</screen></td>
 
-          <td valign="top"><programlisting language="java">final int value = Integer.parseInt("201", 2);
+          <td valign="top"><programlisting language="java">final int value =
+  Integer.parseInt("201", 2);
 System.out.println("Value: " + value)</programlisting><screen>Exception in thread "main" 
  java.lang.NumberFormatException: 
  For input string: "201"
@@ -580,7 +581,118 @@ Exception in thread "main" java.lang.NumberFormatException:
   <section xml:id="sd1_numbers_sect_NumberFormatting">
     <title>Number Formatting</title>
 
-    <para/>
+    <figure xml:id="sd1_numbers_fig_locale">
+      <title>Excerpt from <classname
+      xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Locale.html">java.util.Locale</classname></title>
+
+      <para>A Locale object represents a specific geographical, political, or
+      cultural region.</para>
+
+      <para>An operation that requires a Locale to perform its task is called
+      locale-sensitive and uses the Locale to tailor information for the
+      user.</para>
+
+      <para>For example, displaying a number is a locale-sensitive operation—
+      the number should be formatted according to the customs and conventions
+      of the user's native country, region, or culture.</para>
+    </figure>
+
+    <figure xml:id="sd1_numbers_fig_localeProperties">
+      <title><classname
+      xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Locale.html">Locale</classname>
+      properties</title>
+
+      <itemizedlist>
+        <listitem>
+          <para>Language</para>
+        </listitem>
+
+        <listitem>
+          <para>Encoding</para>
+        </listitem>
+
+        <listitem>
+          <para>Country</para>
+        </listitem>
+
+        <listitem>
+          <para>Extensible</para>
+        </listitem>
+      </itemizedlist>
+    </figure>
+
+    <figure xml:id="sd1_numbers_fig_constructNumberFormat">
+      <title>Get a <classname
+      xlink:href="https://docs.oracle.com/javase/9/docs/api/java/text/NumberFormat.html">NumberFormat</classname>
+      instance</title>
+
+      <programlisting language="java">final NumberFormat standard = new DecimalFormat();
+System.out.println(standard.format(1234.5678));
+
+final NumberFormat de = DecimalFormat.getInstance(Locale.GERMANY);
+System.out.println(de.format(1234.5678));</programlisting>
+
+      <screen>1,234.568
+1.234,568</screen>
+    </figure>
+
+    <figure xml:id="sd1_numbers_fig_customFormat">
+      <title>Create a custom formatter</title>
+
+      <programlisting language="java">final DecimalFormatSymbols unusualSymbols = 
+  new DecimalFormatSymbols(Locale.getDefault());
+unusualSymbols.setDecimalSeparator('|');
+unusualSymbols.setGroupingSeparator('^');
+
+final String strange = "#,##0.###";
+final DecimalFormat weirdFormatter = new DecimalFormat(strange, unusualSymbols);
+weirdFormatter.setGroupingSize(4);
+
+System.out.println(weirdFormatter.format(12345.678));</programlisting>
+
+      <screen>1^2345|678</screen>
+    </figure>
+
+    <qandaset defaultlabel="qanda"
+              xml:id="sd1_numbers_qanda_getAvailableLocales">
+      <title><classname
+      xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Locale.html">Locale</classname>
+      definitions</title>
+
+      <qandadiv>
+        <qandaentry>
+          <question>
+            <para>Each <xref linkend="glo_JRE"/> ships with a set of available
+            <classname
+            xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Locale.html">Locale</classname>
+            definitions. Write a simple program to get the following
+            list:</para>
+
+            <screen>160 locales available:
+Locale: Arabic(ar_AE)
+Locale: Arabic(ar_JO)
+Locale: Arabic(ar_SY)
+Locale: Croatian(hr_HR)
+...
+Locale: Indonesian(in_ID)
+Locale: English(en_GB)</screen>
+
+            <tip>
+              <para>Read the documentation of <classname
+              xlink:href="https://docs.oracle.com/javase/9/docs/api/java/util/Locale.html">Locale</classname>
+              to find appropriate methods.</para>
+            </tip>
+          </question>
+
+          <answer>
+            <programlisting language="java">System.out.println(Locale.getAvailableLocales().length + " locales available:");
+for (final Locale l: Locale.getAvailableLocales()) {
+  System.out.println("Locale: " + l.getDisplayLanguage() + "(" + l + ")");
+}</programlisting>
+          </answer>
+        </qandaentry>
+      </qandadiv>
+    </qandaset>
 
     <qandaset defaultlabel="qanda"
               xml:id="sd1_numbers_qanda_formatIntDoubleDate">
@@ -733,23 +845,125 @@ static public void print(final LocalDate date,  final Locale locale) {
         </qandaentry>
       </qandadiv>
     </qandaset>
-  </section>
 
-  <section xml:id="sd1_numbers_sect_java.lang.Math">
-    <title>The java.lang.Math Class</title>
+    <figure xml:id="sd1_numbers_fig_polymorphicNumberParsing">
+      <title>Polymorphic number parsing</title>
+
+      <programlisting language="java">final NumberFormat de = NumberFormat.getInstance(Locale.GERMANY);
+try {
+  final Number[] values = {
+    de.parse("103.234"),
+    de.parse("400.000,234")};
+
+  for (final Number n: values) {
+    System.out.println(n + "(" + n.getClass().getTypeName() + ")");
+  }
+} catch (ParseException e) {
+  e.printStackTrace();
+}</programlisting>
 
-    <para/>
+      <screen>103234(java.lang.Long)
+400000.234(java.lang.Double)</screen>
+    </figure>
   </section>
 
   <section xml:id="sd1_numbers_sect_WorkingwithMoney">
     <title>Working with Money</title>
 
-    <para/>
+    <figure xml:id="sd1_numbers_fig_floatLimitedPreceision">
+      <title>Limited <code language="java">float</code> precision</title>
+
+      <programlisting language="java">final float result = 0.99f - 0.1f -0.1f -0.1f;
+System.out.println(result);</programlisting>
+
+      <screen>0.68999994</screen>
+    </figure>
+
+    <figure xml:id="sd1_numbers_fig_doubleLimitedPreceision">
+      <title>Limited <code language="java">double</code> precision</title>
+
+      <programlisting language="java">final double result = 0.99 - 0.1 -0.1 -0.1;
+System.out.println(result);</programlisting>
+
+      <screen>0.6900000000000001</screen>
+    </figure>
+
+    <figure xml:id="sd1_numbers_fig_usingBigDecimal">
+      <title>Using <classname
+      xlink:href="https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html">BigDecimal</classname></title>
+
+      <programlisting language="java">final BigDecimal zero_dot_99 = new BigDecimal("0.99");
+final BigDecimal zero_dot_1 = new BigDecimal("0.1");
+
+BigDecimal result = zero_dot_99.
+  subtract(zero_dot_1).
+  subtract(zero_dot_1).
+  subtract(zero_dot_1);
+
+System.out.println(result);</programlisting>
+
+      <screen>0.69</screen>
+    </figure>
+
+    <figure xml:id="sd1_numbers_fig_usingBigDecimalFeatures">
+      <title><classname
+      xlink:href="https://docs.oracle.com/javase/9/docs/api/java/math/BigDecimal.html">BigDecimal</classname>
+      features</title>
+
+      <itemizedlist>
+        <listitem>
+          <para>Higher memory allocation hosting higher precision.</para>
+        </listitem>
+
+        <listitem>
+          <para>Immutable instances</para>
+        </listitem>
+
+        <listitem>
+          <para>Calculation performance penalty.</para>
+        </listitem>
+
+        <listitem>
+          <para>Clumsy interface.</para>
+        </listitem>
+      </itemizedlist>
+    </figure>
   </section>
 
   <section xml:id="sd1_numbers_sect_GeneratingRandomNumbers">
     <title>Generating Random Numbers</title>
 
-    <para/>
+    <figure xml:id="sd1_numbers_fig_random">
+      <title>Using <methodname
+      xlink:href="https://docs.oracle.com/javase/9/docs/api/java/lang/Math.html#random--">static
+      double random​()</methodname></title>
+
+      <programlisting language="java">for (int i = 0; i &lt; 10; i++) {
+  System.out.println(Math.random());
+}</programlisting>
+
+      <screen>0.4754286988826202
+0.0060114391743414375
+...
+0.9047785351372987
+0.2516070321935864</screen>
+    </figure>
+
+    <figure xml:id="sd1_numbers_fig_randomSeed">
+      <title>Seeding a pseudo random generator</title>
+
+      <programlisting language="java">try(final Scanner scanner = new Scanner(System.in)) {
+  System.out.print("Enter an integer seed:");
+  final long seed = scanner.nextLong();
+
+  Random generator = new Random(seed);
+  for (int i = 0; i &lt; 10; i++) {
+    System.out.print(generator.nextBoolean() + " ");
+  }
+}</programlisting>
+
+      <screen>Enter an integer seed:4237549835735
+false true true true false false false true false true </screen>
+    </figure>
   </section>
 </chapter>