計量論壇

 找回密碼
 立即注冊

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-23 14:37

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成年大片免费视频| 校花小雪和门卫老头阅读合集 | 免费一级毛片在级播放| 18禁男女爽爽爽午夜网站免费| 日韩视频在线观看一区二区| 午夜寂寞在线一级观看免费| 2019天天做天天拍天天夜| 日本成人在线免费观看| 人人爽人人爽人人爽人人片av| 免费a在线观看| 小泽玛利亚番号| 亚洲aⅴ男人的天堂在线观看| 美女张开腿让男人桶的视频| 国产精品无打码在线播放| 中文字幕精品亚洲无线码二区| 永久免费a∨片在线观看| 国产乱人伦av在线a| 91福利视频一区| 日产精品久久久久久久性色| 亚洲欧美日韩在线一区| 色妞妞www精品视频| 国产精品自在拍一区二区不卡| 丰满少妇又爽又紧又丰满在线观看| 法国性经典xxxxhd| 国产一区二区三区久久| 4444www免费看| 成年人免费的视频| 亚洲三级黄色片| 看黄色免费网站| 国产大陆xxxx做受视频| 99精品国产高清自在线看超| 日本免费xxxx| 亚洲欧美日韩国产综合| 老子午夜我不卡理论影院| 国产精品成人一区无码| 一级特黄aaa大片在线观看 | 国产精品久久久久久网站| 两个美女脱了内裤互摸网沾| 桃子视频在线观看高清免费视频| 免费观看性生交大片人| 香蕉久久久久久AV成人|