Re: [閒聊] max damage 的最大值
手機回文
印象中好像在板上看過不少次相關討論了
覺得好像可以來簡易科普一下
不知道發了會不會有點掃興,不過還是簡介一下
關於算術這件事情,其實就理論而言都很理想跟直觀
但真的牽扯到實作的時候,就會衍生很多細節
先來簡單舉個例子:
假設現在要做算術運算,而你只有一張紙
上面只有10個格子,而且你只能寫下0-9
最直觀的方法就是寫下多少就是對應的十位數整數
然後此時就可以推論出一些限制:
1. 範圍為0-9999999999的整數
然後就會問說,那負的怎麼辦?
所以我們把第一格寫1表示負0表示正
於是範圍變成 -999999999~999999999
雖然可以表示負數了,但最大值也被壓縮
但可能目前實務上不太可能超出上下界
於是乎開發人員就這麼決定了表示式
而過了好幾年,數字運算上開始會有超出範圍的需求
可能就會有人提出建議
「用科學記號不就好了,國中沒畢業嗎?」
好的,於是我們改變表示式的定義:
前八碼為科學記號前面的數字,後兩碼為10的次方
比方說 1 2 3 4 5 6 7 8 9 9 表示 1.2345678 * 10^99
若是有負的需求就再讓一格,而這樣改進以後
上下界的範圍被大大提升了,感謝這位聰明的先知
其實類似的概念就是變數型態裡面的浮點數
而為什麼這麼簡單的道理人家卻不採用呢?
現在我們回來思考一個問題:
以上述例子而言,表示式是怎麼對應到值域內的?
十個格子,無論怎麼表示,都最多只能表示100億個數字
而只有整數表示是可以在範圍內全部列舉的
這也是浮點數運算一個危險的地方,精準度
對電腦運算上,(1e50+1) - (1e50) 答案可能不會是 1
通常浮點數也是拿來算個近似值而已
以算傷害的需求而言我想並不太適當
最後做個總結:
1. 數值運算有上下界是因為實作限制
2. 整數運算較具有精準性
但回歸目前的使用狀況,要能不怕超出範圍也不是不可能
定義一個變數型態,然後覆寫四則運算及比較邏輯
讓它可以動態擴張自己的記憶體大小應該就可以達成
畢竟怪的血量目前不會超出int的範疇,而是否打死也只是一個比較邏輯而已
-----
Sent from JPTT on my Google Pixel 2.
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 117.19.226.165
※ 文章網址: https://www.ptt.cc/bbs/ToS/M.1534918416.A.2FF.html
推
08/22 14:19,
7年前
, 1F
08/22 14:19, 1F
推
08/22 14:22,
7年前
, 2F
08/22 14:22, 2F
推
08/22 14:34,
7年前
, 3F
08/22 14:34, 3F
推
08/22 14:42,
7年前
, 4F
08/22 14:42, 4F
推
08/22 14:53,
7年前
, 5F
08/22 14:53, 5F
→
08/22 15:01,
7年前
, 6F
08/22 15:01, 6F
就用int去存阿,不懂你的問題....
推
08/22 15:01,
7年前
, 7F
08/22 15:01, 7F
推
08/22 15:07,
7年前
, 8F
08/22 15:07, 8F
※ 編輯: tony123930 (117.19.226.165), 08/22/2018 15:17:46
推
08/22 15:22,
7年前
, 9F
08/22 15:22, 9F
推
08/22 15:22,
7年前
, 10F
08/22 15:22, 10F
推
08/22 15:24,
7年前
, 11F
08/22 15:24, 11F
推
08/22 15:30,
7年前
, 12F
08/22 15:30, 12F
先回答這個,根據我多年來研究程式心理學
我想答案很簡單:
沒為什麼,也不是堅持
就只是一開始用int去存而已
然後後面code一多就改不太動了
所謂的歷史共業
以往還可以說int記憶體需求比較少,效能會比較好
但在現在一堆硬體效能過剩的時代已經沒說服力了
※ 編輯: tony123930 (117.19.226.165), 08/22/2018 15:37:27
→
08/22 15:41,
7年前
, 13F
08/22 15:41, 13F
→
08/22 15:41,
7年前
, 14F
08/22 15:41, 14F
→
08/22 15:41,
7年前
, 15F
08/22 15:41, 15F
→
08/22 15:41,
7年前
, 16F
08/22 15:41, 16F
→
08/22 15:41,
7年前
, 17F
08/22 15:41, 17F
→
08/22 15:41,
7年前
, 18F
08/22 15:41, 18F
→
08/22 15:41,
7年前
, 19F
08/22 15:41, 19F
→
08/22 15:45,
7年前
, 20F
08/22 15:45, 20F
→
08/22 15:45,
7年前
, 21F
08/22 15:45, 21F
→
08/22 15:45,
7年前
, 22F
08/22 15:45, 22F
→
08/22 15:45,
7年前
, 23F
08/22 15:45, 23F
其實需求只是要傷害變數需要更大,只有幾個變數改一下應該還好啦
而且我不覺得這個會造成多大的資源影響
大多都是區域變數,是可以回收的
推
08/22 15:45,
7年前
, 24F
08/22 15:45, 24F
用cpp宣告一個class,裡面存一個vector之類的
然後實作operator,麻煩的地方應該是在進位的部分
至於比較可以把參數設定為int,原本的code就可以維持原樣
只有需要超過int的才需要修改型態
推
08/22 15:47,
7年前
, 25F
08/22 15:47, 25F
我覺得這個才是主因,他們的code八成很亂吧
再加上這幾年來人可能來來去去的
有時候要找屎code的始作俑者可能都不可考了
→
08/22 15:47,
7年前
, 26F
08/22 15:47, 26F
推
08/22 15:50,
7年前
, 27F
08/22 15:50, 27F
推
08/22 15:58,
7年前
, 28F
08/22 15:58, 28F
推
08/22 16:16,
7年前
, 29F
08/22 16:16, 29F
推
08/22 16:22,
7年前
, 30F
08/22 16:22, 30F
→
08/22 16:56,
7年前
, 31F
08/22 16:56, 31F
推
08/22 17:06,
7年前
, 32F
08/22 17:06, 32F
推
08/22 17:12,
7年前
, 33F
08/22 17:12, 33F
※ 編輯: tony123930 (101.11.41.118), 08/22/2018 17:23:02
推
08/22 17:19,
7年前
, 34F
08/22 17:19, 34F
→
08/22 17:48,
7年前
, 35F
08/22 17:48, 35F
推
08/22 17:57,
7年前
, 36F
08/22 17:57, 36F
※ 編輯: tony123930 (101.11.41.118), 08/22/2018 18:08:13
推
08/22 18:16,
7年前
, 37F
08/22 18:16, 37F
推
08/22 18:26,
7年前
, 38F
08/22 18:26, 38F
→
08/22 18:26,
7年前
, 39F
08/22 18:26, 39F
我印象中他們用的是unity,我沒用過
但我之前用過其他開發框架玩過,是用cpp寫的
※ 編輯: tony123930 (101.11.41.118), 08/22/2018 18:29:08
推
08/22 18:50,
7年前
, 40F
08/22 18:50, 40F
閒聊咩,那些板我很常逛了啦
但倒是沒看過有什麼板真的叫code的 ^^
※ 編輯: tony123930 (101.11.41.118), 08/22/2018 18:55:27
推
08/22 18:55,
7年前
, 41F
08/22 18:55, 41F
推
08/22 19:01,
7年前
, 42F
08/22 19:01, 42F
→
08/22 19:01,
7年前
, 43F
08/22 19:01, 43F
推
08/22 19:20,
7年前
, 44F
08/22 19:20, 44F
→
08/22 19:20,
7年前
, 45F
08/22 19:20, 45F
推
08/22 19:28,
7年前
, 46F
08/22 19:28, 46F
推
08/22 19:38,
7年前
, 47F
08/22 19:38, 47F
其實我沒這麼好心,看到的第一眼其實滿反感的
我很不喜歡在那邊裝懂,尤其是還帶著優越感的
一副「這麼簡單你們都想不到」的口吻
實際上更顯露出自己的草率,所以想鞭一下而已
推
08/22 19:46,
7年前
, 48F
08/22 19:46, 48F
→
08/22 19:46,
7年前
, 49F
08/22 19:46, 49F
推
08/22 19:49,
7年前
, 50F
08/22 19:49, 50F
特地定義一個class的好處就是,不怕overflow了
總是超出long long都可以保持一樣的精準度
但就是會需要額外動態要記憶體的功
推
08/22 19:50,
7年前
, 51F
08/22 19:50, 51F
推
08/22 20:19,
7年前
, 52F
08/22 20:19, 52F
→
08/22 20:19,
7年前
, 53F
08/22 20:19, 53F
麥安內,技能不一定是工程師想的
頂多只能說他們實作的效能很差,以後還得寫上android建議規格
推
08/22 20:19,
7年前
, 54F
08/22 20:19, 54F
→
08/22 21:13,
7年前
, 55F
08/22 21:13, 55F
→
08/22 21:13,
7年前
, 56F
08/22 21:13, 56F
→
08/22 21:14,
7年前
, 57F
08/22 21:14, 57F
→
08/22 21:14,
7年前
, 58F
08/22 21:14, 58F
其實每次超出億的時候我都看不清楚數字,要打上去才知道
有人可以支援超過21億的圖嗎?
→
08/22 21:15,
7年前
, 59F
08/22 21:15, 59F
→
08/22 21:16,
7年前
, 60F
08/22 21:16, 60F
推
08/22 21:59,
7年前
, 61F
08/22 21:59, 61F
※ 編輯: tony123930 (101.11.41.118), 08/22/2018 23:40:10
推
08/23 00:06,
7年前
, 62F
08/23 00:06, 62F
推
08/23 00:09,
7年前
, 63F
08/23 00:09, 63F
→
08/23 00:09,
7年前
, 64F
08/23 00:09, 64F
→
08/23 00:10,
7年前
, 65F
08/23 00:10, 65F
→
08/23 00:11,
7年前
, 66F
08/23 00:11, 66F
推
08/23 01:46,
7年前
, 67F
08/23 01:46, 67F
推
08/23 09:12,
7年前
, 68F
08/23 09:12, 68F
推
08/24 01:58,
7年前
, 69F
08/24 01:58, 69F

啊啊,我其實是說小字或打在怪上的 > <
推
08/24 21:17,
7年前
, 70F
08/24 21:17, 70F
※ 編輯: tony123930 (101.11.41.118), 08/24/2018 23:45:45
推
08/26 00:34,
7年前
, 71F
08/26 00:34, 71F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
閒聊
38
55