[vtk-developers] Call for Comments: Ascii representation of floats and doubles in files

David Gobbi david.gobbi at gmail.com
Thu Mar 1 11:32:49 EST 2018


I agree that floats should be printed so that conversion is lossless.
Python's console output does this and I find it incredibly useful.

Not sure if we need to add a new third-party library for this, though,
especially one that duplicates so much of C++'s built-in machinery.
Isn't it just a matter of printing enough digits?  That's basically what
I do in my own code (plus checks for isnan(x) and isinf(x), and a
check of the size of fabs(x) for whether to force scientific notation.)

 - David


On Thu, Mar 1, 2018 at 8:48 AM, Bill Lorensen <bill.lorensen at gmail.com>
wrote:

> Will,
>
> It would go in Common/Core I think. The vtk class would be very small.
>
> Bill
>
> On Thu, Mar 1, 2018 at 7:36 AM, Will Schroeder
> <will.schroeder at kitware.com> wrote:
> > If it works why mess with success? Where would this class
> > (vtkNumberToString) be placed, in Common/Core (like vtkIndent) or in
> some IO
> > directory like VTK/IO/Core?
> >
> > On Thu, Mar 1, 2018 at 10:06 AM, Bill Lorensen <bill.lorensen at gmail.com>
> > wrote:
> >>
> >> Folks,
> >>
> >> I'm working on some examples to save/restore camera, polydata,
> >> property, etc. in XML files. The files can be saved as binary or
> >> ascii. If I save/restore the info in binary, I get the same values for
> >> the saved info. But, to no surprise, when I save the same data in
> >> ascii, I don't get the same values. This is because the file writing
> >> code does not write enough significant digits.
> >>
> >> In ITK we solved this problem many years ago. ITK uses a reduced
> >> version of the Google double-conversion library,
> >> https://github.com/google/double-conversion.
> >>
> >> We added a small class to ITK that uses the library. The class,
> >> itkNumberToString, has a simple API. To convert floating and fixed
> >> point numbers to ascii without numerical precision erros,
> >>
> >> For example, to convert a float,
> >> #include "itkNumberToString.h:
> >> itk::NumberToString<float> convert;
> >> float a = 1.0f/3.0f;
> >> std::cout << convert(a) << std::endl;
> >>
> >> I propose a similar approach in VTK.
> >>
> >> Comments please,
> >>
> >> Bill
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://vtk.org/pipermail/vtk-developers/attachments/20180301/453ad9b0/attachment-0001.html>


More information about the vtk-developers mailing list