[R] Number changed weirdly when converting to numeric

Stephanie Evert
2025-03-09T18:06:17Z

For once, that doesn't seem to be the issue here. The bug only seems to
happen on arm64 and doesn't reproduce on x86_64 hardware.

> x <- as.numeric("-177253333.333333343267441")
> sprintf("%.15f", x)
[1] "-177253333.333333373069763"

This is the number adjacent to -177253333.333333343267441 in IEEE 754.

> writeBin(x, raw(8))
[1] ac aa aa aa 57 21 a5 c1

If you look at the hexadecimal representation, the least significant bit appears
to be off by one: the first byte should be 0xAB rather than 0xAC (according to
online calculators such as https://numeral-systems.com/ieee-754-converter/).

Seems that decimal-to-float conversion has a bug on arm64. Note that I get the
same result with

> x <- -177253333.333333343267441

so it's not specific to as.numeric().

Best,
Stephanie




> On 9 Mar 2025, at 18:46, Jeff Newmiller via R-help <r-help at
r-project.org> wrote:
>
>
https://cran.r-project.org/doc/FAQ/R-FAQ.html#Why-doesn_0027t-R-think-these-numbers-are-equal_003f
>
> https://0.30000000000000004.com/
>
> On March 9, 2025 10:12:47 AM PDT, Christofer Bogaso <bogaso.christofer
at gmail.com> wrote:
>> Hi,
>>
>> I have below simple conversion
>>
>>> sprintf("%0.15f",
as.numeric("-177253333.333333343267441"))
>>
>> [1] "-177253333.333333373069763"
>>
>> I could not figure out why the input and output is different?
>>
>> Clearly this conversion is incorrect. Is there any way to convert to
>> numerical properly?
>>
>>> sessionInfo()
>>
>> R version 4.4.0 (2024-04-24)
>>
>> Platform: aarch64-apple-darwin20
>>
>> Running under: macOS 15.3.1
>>
>>
>> Matrix products: default
>>
>> BLAS:
/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRblas.0.dylib
>>
>> LAPACK:
/Library/Frameworks/R.framework/Versions/4.4-arm64/Resources/lib/libRlapack.dylib;
>> LAPACK version 3.12.0
>>
>>
>> locale:
>>
>> [1] C/UTF-8/C/C/C/C
>>
>>
>> time zone: Asia
>>
>> tzcode source: internal
>>
>>
>> attached base packages:
>>
>> [1] stats     graphics  grDevices utils     datasets  methods   base
>>
>>
>> loaded via a namespace (and not attached):
>>
>> [1] compiler_4.4.0
>>
>> ______________________________________________
>> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
https://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>
> --
> Sent from my phone. Please excuse my brevity.
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide
https://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.


	[[alternative HTML version deleted]]