Add float-specific methods to CsvWriter and NumberOutput to avoid losing precision when casting to double

This pull request include a unit test that would not pass before this commit