Numbers的商數與餘數 - iPhone4.TW

會員登入



顯示結果從 1 到 10 共計 10 條
  1. #1
    吉米丘 的頭像

    勸敗大魔王

    註冊日期:09-20-2007
    文章:50,710
    謝謝你: 9,906
    在 6,551篇文章中獲得 48,051個感謝
    話說吉米這陣子剛好有個需求,要算一個數字12345的檢查碼

    而檢查碼計算公式是這樣:第一碼x1 + 第二碼x2 + 第三碼x3 + 第四碼 x4 + 第五碼 x5

    那我要怎麼來算出來呢?

    吉米本來有想過用除的

    12345除以10000,我就得到第一碼啦,但是問題第二碼要怎麼獲得就把吉米卡死了

    後來問了一個朋友,才豁然開朗

    要用「餘數」跟「商數」,這兩個不用吉米解釋了吧?這是國小的基本吧

    但是要怎麼應用在這個情境下呢?讓吉米來教你





    首先,概念是這樣,12345去除以10,你會得到商數是1234,餘數是5

    有沒有發現,我要的第五碼就拿到了

    那第四碼要怎麼獲得呢?

    同樣在跑一次1234除以10,你是不是又得到了商數是123,餘數是4

    所以第四碼你也就這樣獲得了,以下已此類推

    但是在Numbers(或是excel)裡面要怎麼做到呢?




    首先,我們要先求餘數,語法是





    代碼:
    =MOD(被除數,除數)


    所以B2是我的原始碼,10是我要除以的數字



    所以這樣我的第一個數就獲得囉


    接著來求商數,因為下一碼要用到它







    語法如下

    代碼:
    =QUOTIENT(被除數,除數)



    所以第一個商數我是這樣設定的




    結果就出現1234囉



    然後同理我們來求第四碼

    但是記得喔,數字來源要改成剛剛算出來的商數C8喔





    同樣的,商數的來源也要改成C8喔



    接著如法炮製到後面的所有位數




    最後,我們就把檢查碼的計算公式給帶進去,第一碼x1 + 第二碼x2 + 第三碼x3 + 第四碼 x4 + 第五碼 x5



    答案就出來囉


  2. #2

    海盜船長

    註冊日期:08-16-2010
    文章:9
    謝謝你: 0
    在 0篇文章中獲得 0個感謝
    請問一下如果用下列公式可以算出來嗎?
    =LEFTB(1,B2)*1+LEFTB(2,B2)*2+LEFTB(3,B2)*3+LEFTB(4,B2)*4+LEFTB(5,B2)*5
    因為我很想換蘋果,可是我要用到大量的EXCEL,如果NUMBERS可以符合我的需求我就要買一台蘋果


  3. #3
    吉米丘 的頭像

    勸敗大魔王

    註冊日期:09-20-2007
    文章:50,710
    謝謝你: 9,906
    在 6,551篇文章中獲得 48,051個感謝
    引用 作者: asdfgh 查看文章
    請問一下如果用下列公式可以算出來嗎?
    =LEFTB(1,B2)*1+LEFTB(2,B2)*2+LEFTB(3,B2)*3+LEFTB(4,B2)*4+LEFTB(5,B2)*5
    因為我很想換蘋果,可是我要用到大量的EXCEL,如果NUMBERS可以符合我的需求我就要買一台蘋果



    非常感謝你的分享,讓我又學到一招

    但是要改語法



    在這邊叫做LEFT

    代碼:
    =LEFT(1,B2)*1+LEFT(2,B2)*2+LEFT(3,B2)*3+LEFT(4,B2)*4+LEFT(5,B2)*5



    不過好像是剛好而已,我看語法好像怪怪的,我來研究一下
    此篇文章於 06-20-2011 16:31 被 吉米丘 編輯。


  4. #4

    海盜船長

    註冊日期:01-31-2010
    文章:18
    謝謝你: 0
    在 1篇文章中獲得 4感謝
    呵呵~ 之前在處理銀行銷帳系統時也遇到過,後來乾脆直接跟他們要library 比較快XD


  5. #5
    DarkFat 的頭像

    管理團隊

    註冊日期:03-06-2008
    文章:937
    謝謝你: 33
    在 81篇文章中獲得 172個感謝
    這樣
    =RIGHT(LEFT(B2,1),1)*1+RIGHT(LEFT(B2,2),1)*2+RIGHT(LEFT(B2,3),1)*3+RIGHT(LEFT(B2,4))*4+RIGHT(LEFT(B2,5))*5

    LEFT要先放文字段

    大大試把 12345 改為 98765 就會發現問題。


  6. #6

    海盜船長

    註冊日期:08-16-2010
    文章:9
    謝謝你: 0
    在 0篇文章中獲得 0個感謝
    改這樣應該就沒問題了
    =MID(B2,1,1)*1+MID(B2,2,1)*2+MID(B2,3,1)*3+MID(B2,4,1)*4+MID(B2,5,1)*5

    MID(text,start_num,num_chars)
    Text 為包含想抽選之字元的文字字串。
    Start_num 為要在文字中抽選之第一個字元的位置。文字中的第一個字元為 start_num 1,依此類推。
    Num_chars 指定要 MID 從文字傳回的字元數。


  7. #7

    愛用者

    註冊日期:02-08-2010
    文章:82
    謝謝你: 3
    在 3篇文章中獲得 21個感謝
    引用 作者: asdfgh 查看文章
    改這樣應該就沒問題了
    =MID(B2,1,1)*1+MID(B2,2,1)*2+MID(B2,3,1)*3+MID(B2,4,1)*4+MID(B2,5,1)*5

    MID(text,start_num,num_chars)
    Text 為包含想抽選之字元的文字字串。
    Start_num 為要在文字中抽選之第一個字元的位置。文字中的第一個字元為 start_num 1,依此類推。
    Num_chars 指定要 MID 從文字傳回的字元數。
    這應該是最好的方法, MID是很好用的command.


  8. #8

    愛用者

    註冊日期:06-22-2009
    文章:37
    謝謝你: 0
    在 1篇文章中獲得 1個感謝
    (提供想法)

    char a[] = "12345";
    int checkn;

    for(int i = 1; i<=strlen(a); i++)
    checkn = (int)a[i] * i;

    吉米大的方法是正解,但拿來當字串處理也是可以的
    此篇文章於 06-23-2011 23:22 被 jeremy5189 編輯。


  9. #9
    DarkFat 的頭像

    管理團隊

    註冊日期:03-06-2008
    文章:937
    謝謝你: 33
    在 81篇文章中獲得 172個感謝
    引用 作者: jeremy5189 查看文章
    (提供想法)
    char a[] = "12345";
    int checkn;

    for(int i = 1; i<=strlen(a); i++)
    checkn = (int)a[i] * i;
    請問這是Excel/Numbers/VBA? 還是Java/C/C#/C++?


  10. #10

    海盜船長

    註冊日期:07-14-2009
    文章:186
    謝謝你: 0
    在 6篇文章中獲得 9個感謝
    引用 作者: DarkFat 查看文章
    請問這是Excel/Numbers/VBA? 還是Java/C/C#/C++?
    看起來很像是 C...

    一般人... 不會寫 C... (笑~)


 

 

發文規則

  • 不可以發表新主題
  • 不可以發表回覆
  • 不可以上傳附件
  • 不可以編輯自己的文章
  •  
回到此頁頂端