計量論壇

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
打印 上一主題 下一主題

[數據] 四舍六入函數模板

[復制鏈接]
跳轉到指定樓層
1#
sunrry 發表于 2021-7-28 09:11:42 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本人根據四舍六入奇進偶不進原則,利用vba做了個自定義的函數,希望對大家有用。
函數語音是    Round2(被修約數據,小數位數)
例如把3.45修約保留一位小數,就是    =round(3.45,1)
此表格嵌套了vba,所以只能在此表中進行操作。

四舍六入函數模板.zip

11.59 KB, 下載次數: 114, 下載積分: 金幣 -1

2#
 樓主| sunrry 發表于 2021-7-28 09:16:21 | 只看該作者
此函數利用vba,極大精簡了使用函數的復雜計算步驟。同時有別于目前發表論文中的方法(本人已發),能有效去除excel中浮點誤差的影響。目前其他方法基本上都是根據小數點后七位數字大小判斷進行去除浮點誤差,本方法通過強制轉換十進制解決浮點誤差。
3#
alickglyn 發表于 2021-7-28 15:45:01 | 只看該作者
一行excel函數解決,=ROUND(A1,a)-(MOD(A1*10^(a+1),20)=5)*10^(-a),A1是需要修約的數的單元格,a為修約位數。
4#
 樓主| sunrry 發表于 2021-7-29 08:42:22 | 只看該作者
alickglyn 發表于 2021-7-28 15:45
一行excel函數解決,=ROUND(A1,a)-(MOD(A1*10^(a+1),20)=5)*10^(-a),A1是需要修約的數的單元格,a為修約位 ...

第一,麻煩,每次都要替換,尤其是有時候公式嵌套公式,就更復雜了
第二,excel小數存在浮點誤差影響,這個公式有誤判。
第三,你這個負數修約結果是錯的
5#
唐家琨少 發表于 2021-7-29 09:15:58 | 只看該作者
謝謝樓主的分享,最近也在開始自學用宏,正好用你的來學習下。
vba版的確實好用,不過用宏的話,當表格傳到別的電腦很有可能就會失效啊。有很多電腦的excel默認禁用了宏。
6#
 樓主| sunrry 發表于 2021-7-29 11:48:22 | 只看該作者
唐家琨少 發表于 2021-7-29 09:15
謝謝樓主的分享,最近也在開始自學用宏,正好用你的來學習下。
vba版的確實好用,不過用宏的話,當表格傳到 ...

取消禁止就可以用了。
7#
烏拉辣拉 發表于 2021-7-29 13:41:15 | 只看該作者
學習一下,很有幫助
8#
 樓主| sunrry 發表于 2021-7-30 12:32:35 | 只看該作者
大家有方便實用的工具也可以互相交流一下啊
9#
連長 發表于 2021-7-30 15:05:15 | 只看該作者
修約間隔為10,你這函數就扒瞎了
10#
 樓主| sunrry 發表于 2021-8-10 12:12:51 | 只看該作者
連長 發表于 2021-7-30 15:05
修約間隔為10,你這函數就扒瞎了

修約間隔為5和10的可以再搞個函數,或者直接拿這個數除相應的數以后修約再乘回來
11#
 樓主| sunrry 發表于 2021-8-10 12:13:12 | 只看該作者
excel里面的修約函數也沒有2間隔、5間隔之類的
12#
連長 發表于 2021-8-11 08:47:36 | 只看該作者
可以按照規則,結合excel的數據處理,自己寫個function,費點勁,但不難。

修約間隔.png (89.79 KB, 下載次數: 846)

修約間隔.png
13#
 樓主| sunrry 發表于 2021-8-11 11:45:05 | 只看該作者
難者不會  會者不難
14#
wangyiyong7703 發表于 2023-9-18 18:32:41 | 只看該作者
特殊情況適應了么,3.001,8.9999。還是用了編程,要全部用內建函數。編程可以把很多漏洞補上
15#
wangyiyong7703 發表于 2023-9-18 18:34:09 | 只看該作者

A2輸入待修約數值,B2輸入保留小數點位數,C2輸入公式。對9.9999多的情況不適用,還待改進

IF(B2=0,IF(OR(AND(ISEVEN(INT(A2)),A2-INT(A2)=0.5),A2-INT(A2)<0.5),INT(A2),INT(A2)+1),IF(LEN(IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)))=LEN(INT(A2)),IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2))&"."&REPT("0",B2),IF(LEN(INT(A2*POWER(10,B2)))+1>LEN((IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)))),(IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)))&REPT("0",LEN(INT(A2*POWER(10,B2)))-1-LEN((IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2))))),IF(OR(AND(ISEVEN(INT(A2*POWER(10,B2))),A2*POWER(10,B2)-INT(A2*POWER(10,B2))=0.5),A2*POWER(10,B2)-INT(A2*POWER(10,B2))<0.5),INT(A2*POWER(10,B2))/POWER(10,B2),(INT(A2*POWER(10,B2))+1)/POWER(10,B2)))))
16#
 樓主| sunrry 發表于 2023-9-22 14:57:15 | 只看該作者
wangyiyong7703 發表于 2023-9-18 18:34
A2輸入待修約數值,B2輸入保留小數點位數,C2輸入公式。對9.9999多的情況不適用,還待改進

IF(B2=0,IF(OR ...

你不覺得你的公式很麻煩么。。。。
17#
wangyiyong7703 發表于 2023-9-22 17:11:10 | 只看該作者
sunrry 發表于 2023-9-22 14:57
你不覺得你的公式很麻煩么。。。。

開始設計有點麻煩而已,你直接復制使用有什么麻煩的。如果你用宏去做才真的麻煩。這個公式避開了宏代碼,也相當于宏代碼
18#
 樓主| sunrry 發表于 2023-9-25 13:21:15 | 只看該作者
wangyiyong7703 發表于 2023-9-22 17:11
開始設計有點麻煩而已,你直接復制使用有什么麻煩的。如果你用宏去做才真的麻煩。這個公式避開了宏代碼, ...

對對對,你說的都對。
19#
wangyiyong7703 發表于 2023-10-2 13:05:28 | 只看該作者

IF(OR(AND(ISEVEN(MID(A2,FIND(".",A2)+B2,1)*1),MID(A2,FIND(".",A2)+B2+1,1)="5",IFERROR(RIGHT(A2,LEN(A2)-FIND(".",A2)-B2-1)*1,0)=0),MID(A2,FIND(".",A2)+B2+1,1)*1<5),LEFT(A2,FIND(".",A2,1)+B2),IF(IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2),1),0)=0,LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2)&"."&REPT("0",B2),LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2)&REPT("0",B2-(LEN(LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2))-IFERROR(FIND(".",LEFT(A2,FIND(".",A2,1)*1+B2)*1+IF(A2*1<0,-1,1)/POWER(10,B2),1),0)))))
20#
wangyiyong7703 發表于 2023-10-2 13:06:19 | 只看該作者
sunrry 發表于 2023-9-25 13:21
對對對,你說的都對。

新的算法做的,麻煩抽空指正一下。
21#
 樓主| sunrry 發表于 2023-10-7 13:09:06 | 只看該作者
wangyiyong7703 發表于 2023-10-2 13:06
新的算法做的,麻煩抽空指正一下。

1、小數點有效位數為0直接報錯
2、多次計算后的浮點小數無法避免,后面一堆錯誤。(可以看圖,B2=A2+0.1,C2=B2+0.1,以此類推)
22#
 樓主| sunrry 發表于 2023-10-7 13:20:27 | 只看該作者
=IF(ABS(ABS(A2/1*10^B2-TRUNC(A2/1,B2)*10^B2)-0.5)<10^-7,CEILING(ABS(TRUNC(A2/1,B2)),2*10^-B2)*SIGN(A2/1)*1,ROUND(A2/1,B2)*1)
23#
wangyiyong7703 發表于 2023-10-7 15:05:41 | 只看該作者
sunrry 發表于 2023-10-7 13:09
1、小數點有效位數為0直接報錯
2、多次計算后的浮點小數無法避免,后面一堆錯誤。(可以看圖,B2=A2+0.1, ...

謝謝,,,,,,
24#
wangyiyong7703 發表于 2023-10-7 15:17:07 | 只看該作者
本帖最后由 wangyiyong7703 于 2023-10-7 15:29 編輯
sunrry 發表于 2023-10-7 13:20
=IF(ABS(ABS(A2/1*10^B2-TRUNC(A2/1,B2)*10^B2)-0.5)


我設計的是保留多少位小數的,1位以上,不含0位的。0位及以上可以再設計。主要是出現整數后的加零補位。你說的浮點問題具體指出來,我的是沒有的
25#
wangyiyong7703 發表于 2023-10-7 18:07:26 | 只看該作者
sunrry 發表于 2023-10-7 13:09
1、小數點有效位數為0直接報錯
2、多次計算后的浮點小數無法避免,后面一堆錯誤。(可以看圖,B2=A2+0.1, ...

我看了一下,不是我要解決浮點問題,是你的輸入本來就有問題,6.94999999999999,不是顯示的6.95

微信圖片_20231007180624.png (14.14 KB, 下載次數: 710)

微信圖片_20231007180624.png
您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|Archiver|計量論壇 ( 閩ICP備06005787號-1—304所 )
電話:0592-5613810 QQ:473647 微信:gfjlbbs閩公網安備 35020602000072號

GMT+8, 2025-7-20 08:25

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 风间由美性色一区二区三区| 亚洲免费黄色网| jizz视频护士| 精品人妻一区二区三区浪潮在线| 无套内射无矿码免费看黄| 国产区图片区小说区亚洲区| 久久狠狠躁免费观看| 鸥美一级黄色片| 日本大臿亚洲香蕉大片| 国产免费av片在线播放| 久久久久久国产精品免费免费| 蜜芽亚洲欧美一区二区电影| 无码精品黑人一区二区三区| 国产一级片在线播放| 中文字幕丰满乱子伦无码专区| 老师xxxx69动漫| 嫩草视频在线免费观看| 人人澡人人澡人人澡| 91精品免费久久久久久久久| 欧美性理论片在线观看片免费| 国产福利小视频| 久久精品国产亚洲av四虎| 青柠视频高清观看在线播放| 成年女人a毛片免费视频| 午夜伦伦影理论片大片| chinese乱子伦xxxx国语对白 | 亚洲乱妇老熟女爽到高潮的片| 亚洲精品国产精品国自产网站| 日韩精品无码免费一区二区三区| 国产午夜福利内射青草| 中文字幕亚洲欧美在线不卡| 男男性彩漫漫画无遮挡| 国产美女精品视频| 亚洲一级片在线播放| 青青青在线观看视频免费播放| 把水管开水放b里是什么感觉| 有坂深雪初尝黑人在线观看| 国产女人18毛片水真多18精品| 久久99蜜桃精品久久久久小说| 精品国产一区二区三区香蕉| 成年午夜性视频|