How to get excel to display a certain number of significant figures?

前端 未结 10 1334
太阳男子
太阳男子 2021-01-05 04:10

I am using excel and i want to display a value to a certain number of significant figures.

I tried using the following equation

=ROUND(value,sigfigs-         


        
10条回答
  •  情歌与酒
    2021-01-05 04:37

    WARNING: crazy-long excel formula ahead

    I was also looking to work with significant figures and I was unable to use VBA as the spreadsheets can't support them. I went to this question/answer and many other sites but all the answers don't seem to deal with all numbers all the time. I was interested in the accepted answer and it got close but as soon as my numbers were < 0.1 I got a #value! error. I'm sure I could have fixed it but I was already down a path and just pressed on.

    Problem:

    I needed to report a variable number of significant figures in positive and negative mode with numbers from 10^-5 to 10^5. Also, according to the client (and to purple math), if a value of 100 was supplied and was accurate to +/- 1 and we wish to present with 3 sig figs the answer should be '100.' so I included that as well.

    Solution:

    My solution is for an excel formula that returns the text value with required significant figures for positive and negative numbers.

    It's long, but appears to generate the correct results according to my testing (outlined below) regardless of number and significant figures requested. I'm sure it can be simplified but that isn't currently in scope. If anyone wants to suggest a simplification, please leave me a comment!

    =TEXT(IF(A1<0,"-","")&LEFT(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00"),sigfigs+1)*10^FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1),(""&(IF(OR(AND(FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1)+1=sigfigs,RIGHT(LEFT(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00"),sigfigs+1)*10^FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1),1)="0"),LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00"))<=sigfigs-1),"0.","#")&REPT("0",IF(sigfigs-1-(FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1))>0,sigfigs-1-(FLOOR(LOG10(TEXT(ABS(A1),"0."&REPT("0",sigfigs-1)&"E+00")),1)),0)))))
    

    Note: I have a named range called "sigfigs" and my numbers start in cell A1

    Test Results:

    I've tested it against the wikipedia list of examples and my own examples so far in positive and negative. I've also tested with a few values that gave me issues early on and all seem to produce the correct results.

    I've also tested with a few values that gave me issues early on and all seem to produce the correct results now.

    3 Sig Figs Test

    99.99 -> 100.
    99.9 -> 99.9
    100 -> 100.
    101 -> 101
    

    Notes:

    Treating Negative Numbers

    To Treat Negative Numbers, I have included a concatenation with a negative sign if less than 0 and use the absolute value for all other work.

    Method of construction: It was initially divided into about 6 columns in excel that performed the various steps and at the end I merged all of the steps into one formula above.

提交回复
热议问题