Add documentation for custom precision in float stringification

This commit is contained in:
Martin Hořeňovský
2019-05-03 15:40:21 +02:00
parent 1161011dd0
commit e2862a8d71

View File

@ -7,6 +7,8 @@
[Catch::is_range specialisation](#catchis_range-specialisation)<br> [Catch::is_range specialisation](#catchis_range-specialisation)<br>
[Exceptions](#exceptions)<br> [Exceptions](#exceptions)<br>
[Enums](#enums)<br> [Enums](#enums)<br>
[Floating point precision](#floating-point-precision)<br>
Catch needs to be able to convert types you use in assertions and logging expressions into strings (for logging and reporting purposes). 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. 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<float>::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.
--- ---