{"action":"created","issue":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/19905","repository_url":"https://api.github.com/repos/dotnet/coreclr","labels_url":"https://api.github.com/repos/dotnet/coreclr/issues/19905/labels{/name}","comments_url":"https://api.github.com/repos/dotnet/coreclr/issues/19905/comments","events_url":"https://api.github.com/repos/dotnet/coreclr/issues/19905/events","html_url":"https://github.com/dotnet/coreclr/pull/19905","id":359308026,"node_id":"MDExOlB1bGxSZXF1ZXN0MjE0ODMwMTUz","number":19905,"title":"Fix up the majority of IEEE compliance bugs for Double/Single ToString and Parse","user":{"login":"tannergooding","id":10487869,"node_id":"MDQ6VXNlcjEwNDg3ODY5","avatar_url":"https://avatars3.githubusercontent.com/u/10487869?v=4","gravatar_id":"","url":"https://api.github.com/users/tannergooding","html_url":"https://github.com/tannergooding","followers_url":"https://api.github.com/users/tannergooding/followers","following_url":"https://api.github.com/users/tannergooding/following{/other_user}","gists_url":"https://api.github.com/users/tannergooding/gists{/gist_id}","starred_url":"https://api.github.com/users/tannergooding/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/tannergooding/subscriptions","organizations_url":"https://api.github.com/users/tannergooding/orgs","repos_url":"https://api.github.com/users/tannergooding/repos","events_url":"https://api.github.com/users/tannergooding/events{/privacy}","received_events_url":"https://api.github.com/users/tannergooding/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":29,"created_at":"2018-09-12T04:07:57Z","updated_at":"2018-09-13T23:54:01Z","closed_at":null,"author_association":"MEMBER","pull_request":{"url":"https://api.github.com/repos/dotnet/coreclr/pulls/19905","html_url":"https://github.com/dotnet/coreclr/pull/19905","diff_url":"https://github.com/dotnet/coreclr/pull/19905.diff","patch_url":"https://github.com/dotnet/coreclr/pull/19905.patch"},"body":"This resolves the majority of the issues covered by https://github.com/dotnet/coreclr/issues/19802:\r\n* Ensures that double.Parse for `-0` works correctly\r\n* Ensures that recovering `NaN`, `PositiveInfinity`, and `NegativeInfinity` is done case insensitively\r\n* Ensures that \"R\" always roundtrips to the required number of digits\r\n* Ensures that the \"precision\" specifier works up to `50` digits\r\n  * `50` is the current internal limit for `DoubleToNumber`\r\n  * IEEE requires at least `20` for Double and `12` for Single\r\n\r\nThis should resolve (validated locally, can close after CoreFX tests are added):\r\n* https://github.com/dotnet/coreclr/issues/16783\r\n\r\nThis should partially resolve, both of which deal with `ToString(\"R\")`, but which also involves parsing the result back as well:\r\n* https://github.com/dotnet/coreclr/issues/3313\r\n* https://github.com/dotnet/coreclr/issues/13106\r\n\r\nNot Resolved:\r\n* https://github.com/dotnet/coreclr/issues/1316\r\n* https://github.com/dotnet/coreclr/issues/13615\r\n  * `double.MinValue` and `double.MaxValue` require 17 digits to roundtrip, otherwise an overflow occurs. The current default number of digits is 15, for any format that isn't \"R\"\r\n* https://github.com/dotnet/coreclr/issues/17467\r\n\r\nThis does not handle:\r\n* `-nan` and `+nan`, which IEEE requires we support parsing, but which we can parse to \"Regular\" `NaN`\r\n* `snan`, which IEEE requires we support parsing; but which we can parse to \"regular\" `NaN`\r\n  * support for preceding `-` and `+` is also required for `snan`\r\n  * IEEE does not require us to support formatting `snan`, we are free to format to \"regular\" `NaN`.\r\n* `NaN` and `SNaN` payloads, which are optional\r\n* `+Infinity` (case insensitive), which IEEE requires we support parsing"},"comment":{"url":"https://api.github.com/repos/dotnet/coreclr/issues/comments/421187916","html_url":"https://github.com/dotnet/coreclr/pull/19905#issuecomment-421187916","issue_url":"https://api.github.com/repos/dotnet/coreclr/issues/19905","id":421187916,"node_id":"MDEyOklzc3VlQ29tbWVudDQyMTE4NzkxNg==","user":{"login":"jkotas","id":6668460,"node_id":"MDQ6VXNlcjY2Njg0NjA=","avatar_url":"https://avatars2.githubusercontent.com/u/6668460?v=4","gravatar_id":"","url":"https://api.github.com/users/jkotas","html_url":"https://github.com/jkotas","followers_url":"https://api.github.com/users/jkotas/followers","following_url":"https://api.github.com/users/jkotas/following{/other_user}","gists_url":"https://api.github.com/users/jkotas/gists{/gist_id}","starred_url":"https://api.github.com/users/jkotas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jkotas/subscriptions","organizations_url":"https://api.github.com/users/jkotas/orgs","repos_url":"https://api.github.com/users/jkotas/repos","events_url":"https://api.github.com/users/jkotas/events{/privacy}","received_events_url":"https://api.github.com/users/jkotas/received_events","type":"User","site_admin":false},"created_at":"2018-09-13T23:54:01Z","updated_at":"2018-09-13T23:54:01Z","author_association":"MEMBER","body":"Java's `toString(double)` seems to be speced to return both pretty and roundtripable number. From https://docs.oracle.com/javase/7/docs/api/java/lang/Double.html: There must be at least one digit to represent the fractional part, and beyond that as many, but only as many, more digits as are needed to uniquely distinguish the argument value.\r\n"}}
{"actor":{"display_login":"jkotas"}}