用程式讓數字的正負值顛倒

用程式讓數字的正負值顛倒

更新於 發佈於 閱讀時間約 1 分鐘

Photo by McKylan Mullins from Pexels

寫程式時,遇到要將數字變數的正負值顛倒過來 (例如 55 變成 -55;-66 變成 66),這時該怎麼做?

  1. 用現成的函數。以 PHP 為例,用現成的 gmp_neg 來做,還要轉換成 gmp 型態,好麻煩。程式寫久就會懶得想好方法,直接用這方式。
  2. 用三元運算子判斷正負。若是負的就用絕對值改成正的,若正的就前面加減號。
  3. 數字乘 -1 就可以反向,讓正變負/負變正。
  4. 最漂亮解法: 0 減去數字。(如下面的 PHP 程式)


用加減法速度最快又單純,乘除次之,判斷再處理快再其次,用函數再型別轉換就麻煩多了。

avatar-img
WILSON PENG的沙龍
2會員
26內容數
留言
avatar-img
留言分享你的想法!
WILSON PENG的沙龍 的其他內容
用 PHP 程式來修正 RSS 裡的語法解析錯誤。 一些新聞訊息之類的網站提供 RSS (Resource description framework Site Summary, 簡易資訊聚合),以 XML (Extensible Markup Language, 可延伸標記式語言) 語法的格式
PHP 在 Cloudflare 後的抓 Public IP,Cloudflare 提供了 HTTP_CF_CONNECTING_IP 的 HTTP Header,所以程式用它就可以取到用戶的 IP。
UNIX 在設計時,用 32 位元為基礎設計,Timestamp (time_t 結構) 順理成章也是 32 位元 (signed int32),從 1970 年開始算,導致它能記錄的時間在 2038 年會溢位變負數。
有一種狀況,URL GET method 有設變數,卻是空值 http://foo.bar.xxx/idol.php?IdolGroup= 這時,變數就算初始化也還是 null, 不會變成預設值
程式如下: 跑了五次,每次判斷一千萬回 f1() 陣列的方式: 5.2219750881195 5.194901943
這支 PHP 的小程式,輸入時間,會顯示回傳的時間: 放在 command line 執行,如下: $ php cst.php “2018–04–01 00:00:00 cst” 多了 14 小時,好神奇。 追 PHP Source 好了,看問題在哪。找到這支定義時區的設定: timezonemap
用 PHP 程式來修正 RSS 裡的語法解析錯誤。 一些新聞訊息之類的網站提供 RSS (Resource description framework Site Summary, 簡易資訊聚合),以 XML (Extensible Markup Language, 可延伸標記式語言) 語法的格式
PHP 在 Cloudflare 後的抓 Public IP,Cloudflare 提供了 HTTP_CF_CONNECTING_IP 的 HTTP Header,所以程式用它就可以取到用戶的 IP。
UNIX 在設計時,用 32 位元為基礎設計,Timestamp (time_t 結構) 順理成章也是 32 位元 (signed int32),從 1970 年開始算,導致它能記錄的時間在 2038 年會溢位變負數。
有一種狀況,URL GET method 有設變數,卻是空值 http://foo.bar.xxx/idol.php?IdolGroup= 這時,變數就算初始化也還是 null, 不會變成預設值
程式如下: 跑了五次,每次判斷一千萬回 f1() 陣列的方式: 5.2219750881195 5.194901943
這支 PHP 的小程式,輸入時間,會顯示回傳的時間: 放在 command line 執行,如下: $ php cst.php “2018–04–01 00:00:00 cst” 多了 14 小時,好神奇。 追 PHP Source 好了,看問題在哪。找到這支定義時區的設定: timezonemap