Need help implementing EPA rounding method
This question concerns the environmental field. The EPA recommends a method
of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. |
Need help implementing EPA rounding method
...our network may kick out an attempt to use a macro.
That's too bad, as vba uses Bankers Rounding. ?WorksheetFunction.Round(10.5, 0) 11 ?Round(10.5, 0) 10 -- HTH :) Dana DeLouis Windows XP & Office 2003 "Will S." <Will wrote in message ... This question concerns the environmental field. The EPA recommends a method of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. |
Need help implementing EPA rounding method
I gave a user defined function for the purpose at
http://groups.google.com/group/micro...7fce6145b70d69 This method is specified by ASTM and most other standards organizations that choose to explicitly specify how rounding is done. How it came to be called "bankers' rounding" in some computer circles is a mystery to me, since bankers are one of the few groups who AFAIK never round in this way. Jerry "Will S." wrote: This question concerns the environmental field. The EPA recommends a method of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. |
Need help implementing EPA rounding method
Jerry,
I'm glad to see that someone else knows what I'm talking about. It also seems like the solution is only available in VB. Assuming I can make the macro work under our security settings, how would I implement the solution you've defined? First, where do I program it in. Second, how do I call it up in the spreadsheet? Thanks in advance, -Will "Jerry W. Lewis" wrote: I gave a user defined function for the purpose at http://groups.google.com/group/micro...7fce6145b70d69 This method is specified by ASTM and most other standards organizations that choose to explicitly specify how rounding is done. How it came to be called "bankers' rounding" in some computer circles is a mystery to me, since bankers are one of the few groups who AFAIK never round in this way. Jerry "Will S." wrote: This question concerns the environmental field. The EPA recommends a method of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. |
Need help implementing EPA rounding method
To get the code into the workbook:
1) Right click a tab on your workbook and select view code 2) On the lefthand side of the screen you will see a window which lists your workbook, its associated objects, and any other workbook you have open. Right-click on the workbook name in question, select Insert Module. 3) Copy and paste the code at the link into the large white space on the right hand side of the screen. 4) Hit save. 5) Run the function like any other; i.e., =ASTMround(A1) 6) Post any questions you have including a detailed explanation of what you have done so far. As to your security settings--I have no idea how this would affect them, because everyone's security situation is different. Dave -- Brevity is the soul of wit. "Will S." wrote: Jerry, I'm glad to see that someone else knows what I'm talking about. It also seems like the solution is only available in VB. Assuming I can make the macro work under our security settings, how would I implement the solution you've defined? First, where do I program it in. Second, how do I call it up in the spreadsheet? Thanks in advance, -Will "Jerry W. Lewis" wrote: I gave a user defined function for the purpose at http://groups.google.com/group/micro...7fce6145b70d69 This method is specified by ASTM and most other standards organizations that choose to explicitly specify how rounding is done. How it came to be called "bankers' rounding" in some computer circles is a mystery to me, since bankers are one of the few groups who AFAIK never round in this way. Jerry "Will S." wrote: This question concerns the environmental field. The EPA recommends a method of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. |
Need help implementing EPA rounding method
...our network may kick out an attempt to use a macro.
I know this is probably not foolproof, but just an initial attempt. Mod can't work with very large numbers either. =ROUND(A1,0)-(AND(MOD(A1,0.5)=0,ISEVEN(A1))) -- Dana DeLouis Windows XP & Office 2003 "Will S." <Will wrote in message ... This question concerns the environmental field. The EPA recommends a method of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. |
Need help implementing EPA rounding method
Hello,
This is from Jerry L. Lewis: http://groups.google.com/group/micro...UTF-8&safe=off Code: Function RoundEven(num, Optional digits) If IsMissing(digits) Then digits = 0 RoundEven = Round(CDbl(CStr(num)), digits) End Function HTH, Bernd |
Need help implementing EPA rounding method
=ROUND( a1, 0 ) - AND( MOD( a1, 1 ) = 0.5, ISEVEN( a1 ) )
-- Regards, Luc. "Festina Lente" "Will S." wrote: This question concerns the environmental field. The EPA recommends a method of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. |
Need help implementing EPA rounding method
PapaDos wrote:
=ROUND( a1, 0 ) - AND( MOD( a1, 1 ) = 0.5, ISEVEN( a1 ) ) That was my answer. But to avoid the anomalous failure of MOD() with large numbers, try: =round(a1,0) - and(a1-int(a1)=0.5, iseven(a1)) |
Need help implementing EPA rounding method
Your formula rounds in the wrong direction if A1<0.
Also it may not give the intended result if A1 is calculated. There are 14 distinct binary numbers that all display as decimal 0.5, but your formula will only recognize one of them as 0.5. As in my VBA function, you can treat as equal to .5 any number that equals .5 to 15 figures by converting to a string and back again. Thus =ROUND(A1,0) - AND(A1-INT(VALUE(A1&""))=0.5, ISEVEN(A1))*SIGN(A1) Should handle both issues. Jerry " wrote: PapaDos wrote: =ROUND( a1, 0 ) - AND( MOD( a1, 1 ) = 0.5, ISEVEN( a1 ) ) That was my answer. But to avoid the anomalous failure of MOD() with large numbers, try: =round(a1,0) - and(a1-int(a1)=0.5, iseven(a1)) |
Need help implementing EPA rounding method
On Tue, 7 Nov 2006 05:53:02 -0800, Will S. <Will
wrote: This question concerns the environmental field. The EPA recommends a method of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. Perhaps: =INT(A1+MOD(INT(A1),2)*MOD(A1,1)) --ron |
Need help implementing EPA rounding method
Jerry W. Lewis wrote:
Also it may not give the intended result if A1 is calculated. There are 14 distinct binary numbers that all display as decimal 0.5, but your formula will only recognize one of them as 0.5. I realize that; in fact, it was intentional. It is not clear to me whether the ASTM standard applies to "displayed" results or to actual results. I cannot find a (free) online copy of the standard [1]. I suspect the latter; that is, I suspect the ASTM standard makes no such distinction, since the ASTM is not specific to any application (e.g. Excel). In the real world, people need to decide at what point their numbers should and should not be rounded. I suspect that the ASTM standard specifies that all reported (i.e. visible) numbers and perhaps all intermediate computed results are rounded according to the standard. Of course, the point you made in your article that you cited earlier is that __other__ fractions ending in "5" (e.g. 0.05) cannot be represented exactly in binary computers. Therefore, a simple comparison with 0.05 (e.g.) might be suspicious. And that is where your VBA function and the distinction between internal and displayed representation becomes important. (Although one could argue that we are splitting hairs.) But the OP asked specifically about rounding 0.5 to an integer. Since 0.5 can be represented exactly in binary computers, I think a comparison with 0.5 per se is valid and sufficient. Of course, reasonable people can have differing opinions. That is simply mine. |
Need help implementing EPA rounding method
I might agree with you on not fuzzing to 15 figures if Excel allowed display
of 17 figures (required to uniquely identify a binary floating point value). But given that the user is not permitted to see the differences that would otherwise drive the rounding, coupled with the fact that the number to be rounded is probably the result of a calculation (if you wanted the rounded entry wouldn't you just enter the rounded value) and therefore unlikely to be exactly .5 when true decimal calculations would be exactly .5, IMHO rounding based on what you are permitted to see is more likely to be what users want and expect from a rounding routine. Jerry " wrote: Jerry W. Lewis wrote: Also it may not give the intended result if A1 is calculated. There are 14 distinct binary numbers that all display as decimal 0.5, but your formula will only recognize one of them as 0.5. I realize that; in fact, it was intentional. It is not clear to me whether the ASTM standard applies to "displayed" results or to actual results. I cannot find a (free) online copy of the standard [1]. I suspect the latter; that is, I suspect the ASTM standard makes no such distinction, since the ASTM is not specific to any application (e.g. Excel). In the real world, people need to decide at what point their numbers should and should not be rounded. I suspect that the ASTM standard specifies that all reported (i.e. visible) numbers and perhaps all intermediate computed results are rounded according to the standard. Of course, the point you made in your article that you cited earlier is that __other__ fractions ending in "5" (e.g. 0.05) cannot be represented exactly in binary computers. Therefore, a simple comparison with 0.05 (e.g.) might be suspicious. And that is where your VBA function and the distinction between internal and displayed representation becomes important. (Although one could argue that we are splitting hairs.) But the OP asked specifically about rounding 0.5 to an integer. Since 0.5 can be represented exactly in binary computers, I think a comparison with 0.5 per se is valid and sufficient. Of course, reasonable people can have differing opinions. That is simply mine. |
If your system ends up kicking out a VBA code, try using this formula. Copy and paste it into whatever cell you want. Assume that the number you wish to round is in cell C4.
=IF(ROUND(C4,0)=ROUND(C4-0.1,0),ROUND(C4,0),IF(ISEVEN(ROUND(C4,0)),ROUND(C4 ,0),ROUNDDOWN(C4,0))) |
Need help implementing EPA rounding method
"Ron Rosenfeld" wrote in message
... On Tue, 7 Nov 2006 05:53:02 -0800, Will S. <Will wrote: This question concerns the environmental field. The EPA recommends a method of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. Perhaps: =INT(A1+MOD(INT(A1),2)*MOD(A1,1)) --ron I like this one, short works and does negative numbers. |
Need help implementing EPA rounding method
wrote in message
oups.com... PapaDos wrote: =ROUND( a1, 0 ) - AND( MOD( a1, 1 ) = 0.5, ISEVEN( a1 ) ) That was my answer. But to avoid the anomalous failure of MOD() with large numbers, try: =round(a1,0) - and(a1-int(a1)=0.5, iseven(a1)) This one works for positive numbers, when you get in the negative numbers it rounds the wrong way. |
Need help implementing EPA rounding method
wrote in message
oups.com... PapaDos wrote: =ROUND( a1, 0 ) - AND( MOD( a1, 1 ) = 0.5, ISEVEN( a1 ) ) That was my answer. But to avoid the anomalous failure of MOD() with large numbers, try: =round(a1,0) - and(a1-int(a1)=0.5, iseven(a1)) I was trying this out for negative numbers (loss) and it works well. |
Need help implementing EPA rounding method
"plb2882" wrote in message
... "Ron Rosenfeld" wrote in message ... On Tue, 7 Nov 2006 05:53:02 -0800, Will S. <Will wrote: This question concerns the environmental field. The EPA recommends a method of rounding which is statistically more accurate than the method we all learned in elementary school. Basically, if the tenth digit is .5, you do not simply round up, but rather round to the nearest EVEN whole number. Ex: 1.5 = 2 10.5 = 10 (not 11) The rule only makes a difference when the tenth digit is .5 . Using the IF statement, I think I can create a spreadhseet function that evaluates a number, and rounds to the even digit or rounds normally based on that evaluation. In order for this to work, however, I need Excel to only evaluate the first digit after the decimal point. The trouble is, I don't know how to get Excel to do this. I'm hoping that a simple manipulation of an existing function will solve this since our network may kick out an attempt to use a macro. Any help on this problem would be appreciated. Perhaps: =INT(A1+MOD(INT(A1),2)*MOD(A1,1)) --ron I like this one, short works and does negative numbers. I'm bad this one messes up with negative numbers (losses). |
Need help implementing EPA rounding method
"plb2882" wrote in message
... wrote in message oups.com... PapaDos wrote: =ROUND( a1, 0 ) - AND( MOD( a1, 1 ) = 0.5, ISEVEN( a1 ) ) That was my answer. But to avoid the anomalous failure of MOD() with large numbers, try: =round(a1,0) - and(a1-int(a1)=0.5, iseven(a1)) This one works for positive numbers, when you get in the negative numbers it rounds the wrong way. Sorry this one does work with negative numbers. |
All times are GMT +1. The time now is 03:44 AM. |
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
ExcelBanter.com