Convert Scientific Notation to Numeric, Preserving Decimals

Convert scientific notation to numeric, preserving decimals

You can turn off scientific notation for numbers using the option below;

options(scipen = 999)

That would make all the numbers to appear as decimals.


If you want to revert it back to the default, use

options(scipen = 0)

See getOption("scipen") for more options.

BigQuery - convert scientific notation to decimal format

You can use the new numeric/decimal value to get the format you want:

SELECT cast(SUM(totals.totalTransactionRevenue) * 0.20 as numeric) AS COGS

It also works to cast as a string:

SELECT cast(SUM(totals.totalTransactionRevenue) * 0.20 as string) AS COGS

Convert scientific notation to decimal with no trailing zeros

If you numbers are consistently like this, you could just modify the string:

number = "1.23155e-8" # as a string
lead, power = number.split("e-")
a, b = lead.split(".")
number = "0." + "0"*(int(power)-1) + a + b

print(number)

edit: fixed it.

Force R not to use exponential notation (e.g. e+10)?

This is a bit of a grey area. You need to recall that R will always invoke a print method, and these print methods listen to some options. Including 'scipen' -- a penalty for scientific display. From help(options):

‘scipen’: integer. A penalty to be applied when deciding to print
numeric values in fixed or exponential notation. Positive
values bias towards fixed and negative towards scientific
notation: fixed notation will be preferred unless it is more
than ‘scipen’ digits wider.

Example:

R> ran2 <- c(1.810032e+09, 4) 
R> options("scipen"=-100, "digits"=4)
R> ran2
[1] 1.81e+09 4.00e+00
R> options("scipen"=100, "digits"=4)
R> ran2
[1] 1810032000 4

That said, I still find it fudgeworthy. The most direct way is to use sprintf() with explicit width e.g. sprintf("%.5f", ran2).



Related Topics



Leave a reply



Submit