diff --git a/docs/tostring.md b/docs/tostring.md index 77322dc6..549f8aed 100644 --- a/docs/tostring.md +++ b/docs/tostring.md @@ -7,6 +7,8 @@ [Catch::is_range specialisation](#catchis_range-specialisation)
[Exceptions](#exceptions)
[Enums](#enums)
+[Floating point precision](#floating-point-precision)
+ Catch needs to be able to convert types you use in assertions and logging expressions into strings (for logging and reporting purposes). Most built-in or std types are supported out of the box but there are two ways that you can tell Catch how to convert your own types (or other, third-party types) into strings. @@ -104,6 +106,22 @@ TEST_CASE() { } ``` +## Floating point precision + +Catch provides a built-in `StringMaker` specialization for both `float` +`double`. By default, it uses what we think is a reasonable precision, +but you can customize it by modifying the `precision` static variable +inside the `StringMaker` specialization, like so: + +```cpp + Catch::StringMaker::precision = 15; + const float testFloat1 = 1.12345678901234567899f; + const float testFloat2 = 1.12345678991234567899f; + REQUIRE(testFloat1 == testFloat2); +``` + +This assertion will fail and print out the `testFloat1` and `testFloat2` +to 15 decimal places. ---