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
No known key found for this signature in database
GPG Key ID: DE48307B8B0D381A

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.
--- ---