Dealing with large numbers in R [Inf] and Python

后端 未结 2 836
野性不改
野性不改 2021-01-12 05:55

I am learning Python these days, and this is probably my first post on Python. I am relatively new to R as well, and have been using R for about a year. I am comparing both

2条回答
  •  甜味超标
    2021-01-12 06:53

    In answer to your questions:

    a) They use different representations for numbers. Most numbers in R are represented as double precision floating point values. These are all 64 bits long, and give about 15 digit precision throughout the range, which goes from -double.xmax to double.xmax, then switches to signed infinite values. R also uses 32 bit integer values sometimes. These cover the range of roughly +/- 2 billion. R chooses these types because it is geared towards statistical and numerical methods, and those rarely need more precision than double precision gives. (They often need a bigger range, but usually taking logs solves that problem.)

    Python is more of a general purpose platform, and it has types discussed in MichaelChirico's comment.

    b) Besides Brobdingnag, the gmp package can handle arbitrarily large integers. For example,

    > as.bigz(2)^1500
    Big Integer ('bigz') :
    [1] 35074662110434038747627587960280857993524015880330828824075798024790963850563322203657080886584969261653150406795437517399294548941469959754171038918004700847889956485329097264486802711583462946536682184340138629451355458264946342525383619389314960644665052551751442335509249173361130355796109709885580674313954210217657847432626760733004753275317192133674703563372783297041993227052663333668509952000175053355529058880434182538386715523683713208549376
    > nchar(as.character(as.bigz(2)^1500))
    [1] 452
    

    I imagine the as.character() call would also be needed with Brobdingnag.

提交回复
热议问题