Skip to content

Commit 03be09d

Browse files
committed
Formatting floating point numbers
1 parent e2c0752 commit 03be09d

7 files changed

Lines changed: 38 additions & 7 deletions

File tree

src/main/java/com/github/refhumbold/algolib/geometry/dim2/Angle.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.refhumbold.algolib.geometry.dim2;
22

3+
import java.text.DecimalFormat;
34
import java.util.Objects;
45
import com.github.refhumbold.algolib.geometry.GeometryComparator;
56

@@ -53,4 +54,12 @@ public int compareTo(Angle angle)
5354
{
5455
return angle == null ? 1 : comparator.compare(degrees, angle.degrees);
5556
}
57+
58+
@Override
59+
public String toString()
60+
{
61+
var df = new DecimalFormat("0.0###########");
62+
63+
return "Angle(%s deg)".formatted(df.format(degrees));
64+
}
5665
}

src/main/java/com/github/refhumbold/algolib/geometry/dim2/Point2D.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.refhumbold.algolib.geometry.dim2;
22

3+
import java.text.DecimalFormat;
34
import java.util.Objects;
45
import com.github.refhumbold.algolib.geometry.GeometryComparator;
56

@@ -43,7 +44,9 @@ public int hashCode()
4344
@Override
4445
public String toString()
4546
{
46-
return "(%f, %f)".formatted(x, y);
47+
var df = new DecimalFormat("0.0###########");
48+
49+
return "(%s, %s)".formatted(df.format(x), df.format(y));
4750
}
4851

4952
public double radius()

src/main/java/com/github/refhumbold/algolib/geometry/dim2/Vector2D.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.refhumbold.algolib.geometry.dim2;
22

3+
import java.text.DecimalFormat;
34
import java.util.Objects;
45
import com.github.refhumbold.algolib.geometry.GeometryComparator;
56

@@ -58,7 +59,9 @@ public int hashCode()
5859
@Override
5960
public String toString()
6061
{
61-
return "[%f, %f]".formatted(x, y);
62+
var df = new DecimalFormat("0.0###########");
63+
64+
return "[%s, %s]".formatted(df.format(x), df.format(y));
6265
}
6366

6467
public double length()

src/main/java/com/github/refhumbold/algolib/geometry/dim3/Point3D.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.refhumbold.algolib.geometry.dim3;
22

3+
import java.text.DecimalFormat;
34
import java.util.Objects;
45
import com.github.refhumbold.algolib.geometry.GeometryComparator;
56

@@ -45,7 +46,9 @@ public int hashCode()
4546
@Override
4647
public String toString()
4748
{
48-
return "(%f, %f, %f)".formatted(x, y, z);
49+
var df = new DecimalFormat("0.0###########");
50+
51+
return "(%s, %s, %s)".formatted(df.format(x), df.format(y), df.format(z));
4952
}
5053

5154
public double radius()

src/main/java/com/github/refhumbold/algolib/geometry/dim3/Vector3D.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.github.refhumbold.algolib.geometry.dim3;
22

3+
import java.text.DecimalFormat;
34
import java.util.Objects;
45
import com.github.refhumbold.algolib.geometry.GeometryComparator;
56

@@ -71,7 +72,9 @@ public int hashCode()
7172
@Override
7273
public String toString()
7374
{
74-
return "[%f, %f, %f]".formatted(x, y, z);
75+
var df = new DecimalFormat("0.0###########");
76+
77+
return "[%s, %s, %s]".formatted(df.format(x), df.format(y), df.format(z));
7578
}
7679

7780
public double length()

src/main/java/com/github/refhumbold/algolib/maths/Equation.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
11
package com.github.refhumbold.algolib.maths;
22

33
import java.text.DecimalFormat;
4-
import java.text.DecimalFormatSymbols;
54
import java.util.Arrays;
6-
import java.util.Locale;
75
import java.util.stream.Collectors;
86
import java.util.stream.IntStream;
97

@@ -37,7 +35,8 @@ public static Equation of(double[] coefficients, double free)
3735
@Override
3836
public String toString()
3937
{
40-
DecimalFormat df = new DecimalFormat("", DecimalFormatSymbols.getInstance(Locale.ENGLISH));
38+
var df = new DecimalFormat("0.############");
39+
4140
return IntStream.range(0, coefficients.length)
4241
.filter(i -> coefficients[i] != 0)
4342
.mapToObj(i -> "%s x_%d".formatted(df.format(coefficients[i]), i))

src/test/java/com/github/refhumbold/algolib/geometry/dim2/AngleTest.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import java.util.stream.Stream;
44
import org.assertj.core.api.Assertions;
55
import org.assertj.core.data.Offset;
6+
import org.junit.jupiter.api.Test;
67
import org.junit.jupiter.params.ParameterizedTest;
78
import org.junit.jupiter.params.provider.Arguments;
89
import org.junit.jupiter.params.provider.MethodSource;
@@ -40,6 +41,16 @@ public void radians_WhenFromDegrees_ThenPositiveRadiansInRange(double degrees, d
4041
Assertions.assertThat(result).isCloseTo(radians, OFFSET);
4142
}
4243

44+
@Test
45+
public void toString_ThenStringRepresentation()
46+
{
47+
// when
48+
String result = Angle.fromDegrees(150.123456789).toString();
49+
50+
// then
51+
Assertions.assertThat(result).isEqualTo("Angle(150.123456789 deg)");
52+
}
53+
4354
private static Stream<Arguments> paramsFor_degrees_WhenFromRadians()
4455
{
4556
return Stream.of(Arguments.of(0.0, 0.0), Arguments.of(Math.PI / 6, 30.0),

0 commit comments

Comments
 (0)