Skip to content

make RoundTripDoubleToBuffer locale-independent#2082

Open
dxbjavid wants to merge 1 commit into
abseil:masterfrom
dxbjavid:highprecision-locale-radix
Open

make RoundTripDoubleToBuffer locale-independent#2082
dxbjavid wants to merge 1 commit into
abseil:masterfrom
dxbjavid:highprecision-locale-radix

Conversation

@dxbjavid

Copy link
Copy Markdown

RoundTripDoubleToBuffer formats with snprintf %g, whose radix character follows the global C locale's LC_NUMERIC category, so in a process that has called setlocale() to something like de_DE or fr_FR absl::HighPrecision(d) comes out as e.g. "0,1". SimpleAtod only accepts '.', so the value no longer parses back to itself even though round-tripping through SimpleAtod is exactly what HighPrecision promises, and the rest of the float formatting here (RoundTripFloatToBuffer, SixDigitsToBuffer) is already locale-independent. This rewrites the radix character back to '.' in the produced buffer, and adds a regression test that exercises HighPrecision under a comma-radix locale (skipped when no such locale is installed).

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant