記錄一些曾經遇過的數字和排序問題,給自己看。

數字

  1. 大多時候遇到的數字都是正整數,不需要特別處理。(耶~)
  2. 加上千分位符號,例如 1,234,567 。用 number_format() 可以處理。
  3. 四捨五入到某一位,例如 1234567 四捨五入到萬,變成 1230000 。用 round() 可以處理。類似的狀況有無條件進位/無條件捨去,對應的是 floor()ceil()
  4. 取百分比,通常搭配四捨五入使用。要注意的例外是被除數為 0 的情況, php 會噴 warning , js 會變成 InfinityNaN
  5. 忽略正負值。用 abs() 取絕對值即可。
  6. 轉成純字串。例如手機號碼是 09 開頭,沒轉成字串的話就會變成 9 開頭的九位數。
  7. 除以 1024 的倍數,通常是轉成 KB MB GB ... 等單位用的。
  8. 除以 1000 的倍數,通常是轉成 K M G ... 等單位用的。
  9. 除以 10000 的倍數,通常是數字太大時才會用到的。
  10. 像超商折扣那樣的五捨六入。遇到時只能自己寫 function 了… orz

排序

  1. 照某種既有的規定排序。這最常遇到,例如要把淡水信義線的捷運站列出來,不是淡水→紅樹林→…→象山,就是象山→台北101/世貿→…→淡水;雖然捷運站本身有代號,不過有些站用代號排只會一團混亂,例如迴龍 O59 →丹鳳 O60 →輔大 O1 →… ,用一般的排序方式沒辦法把 59 和 60 排在 1 前面。最後是把指定的順序丟進一個 array 裡,把 array key 寫成排序值。
  2. 照英文字母由 A 到 Z 排序。通常又可以細分為忽略大小寫,大寫在小寫前面,小寫在大寫前面三種。最常用的就是忽略大小寫的排序,把要排序的字串用 strtolower() 處理過,丟進一個 array 裡然後再利用 sort() 家族解決。
  3. 照數值由少到多或由多到少排序。
  4. 照資料的時間值新到舊或舊到新排序。
  5. 由北到南或由西向東排序。如果是實際地理座標的話,就用 GPS WGS84 解決。
  6. 照資料的長度排序。只遇過一次,還是在 MySQL 遇到的,用 ORDER BY LENGTH(`column`)
  7. 中文的部份也很少遇到要排序,有的話就是用 Unicode 字碼順序(一丁丂七…)解決。
  8. 隨便排序,不處理。(耶~)

arrow
arrow
    創作者介紹
    創作者 repeat ❤️ 的頭像
    repeat ❤️

    旅行的記憶

    repeat ❤️ 發表在 痞客邦 留言(0) 人氣()