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

Bill Lorensen bill.lorensen at gmail.com
Thu Mar 1 11:34:49 EST 2018


The library is very small.

On Mar 1, 2018 8:33 AM, "David Gobbi" <david.gobbi at gmail.com> wrote:

> 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/bea8855f/attachment.html>


More information about the vtk-developers mailing list