# 資料型別 變數跟java一樣,要先寫資料型態 Ex: int x = 10; :::success C++ 11 後可以直接用 auto ::: * float 、double 單精度、雙精度(後面會做說明) * char (後面會介紹) * bool 布林值,儲存 true 或 false * **string** 字串,儲存多個字元 * long 長整數 * void 無返回值的函數使用 (例如 void myFunction()) ## 宣告常數 ```cpp= #define x 10 // 語法1 const int x = 10; // 語法2 int const x = 10; // 語法3 ``` --- 以下根據較特殊的資料型態做更深的講解 # char :::info char會將賦值的東西都轉為數字(十進位) ::: 根據輸出指令不同,可以得到不同的結果 ```cpp= char x = 0101; // x = 65 cout << x << endl; // 印出 '@' cout << (int)x << endl; // 印出 '65' ``` 也可以根據char的特性,用以下方法判斷 **是否大寫** ```cpp= char c; cin >> c; if (c >= 'A' && c <= 'Z') { cout << "這是大寫"; } else { cout << "這不是大寫"; } ``` > 驗證是否是數字也是同樣辦法 ### 取出**字串中的數字和** > Q: 將 “123qwe456” 中是數字的部分取出並加入ans ```cpp= c - '0' ``` :::info ### ascii與char 數字轉char : `char a = (char)100` char轉string: `string s(1,a)` ::: # float 與 double float只能存到一定位數,所以通常會用double。 :::warning 而宣告常數若使用define,系統也會優先使用double,若要指定為float,要在後面加上f。 ::: APCS很愛考科學記號,$e+4$ 就是 $10^4$。 --- 輸出小數點 ⇒ 在數字後面個加上點” . “ 就行`cout<< 101./5.;` **輸出到精確位數** ```c #include <iostream> #include <iomanip> //先導入函式庫 using namespace std; int main(){ cout<< fixed << setprecision(9) << 2434./7.; return 0; } ``` 注意,`setprecision()` 的效果,會持續影響到後面的所有 `cout` 。 所以要新的cout時要重新設定 ### 浮點數誤差 當你執行以下程式碼時你會發現 ```c int main(){ float f = 3.333333333333333; cout << fixed << setprecision(15) << f; return 0; } //輸出:3.333333253860474 ``` 後面的小數位都錯誤的,這就是所謂的 *浮點數誤差* > 一個浮點數在固定位數之後就會與原本的值不一樣而產生誤差。 > :::success `double` 比 `float` 準確, 可以儲存的準確位數較多 ::: # typedef 可以用**修飾字**自訂要大一點記憶體還是小一點 ```cpp long short ``` 如果今天題目測資很大要用到`long long` 不可能要每次定義變數都打這麼多 可以直接,用`typedef long long LL` 這樣之後要用到就直接寫LL就好 ```cpp= #define Mx 10000 typedef long long LL LL li[Mx] int main(){ LL int x = 10E+40 } ``` # 補充 - 查看記憶體大小 可以用 ```cpp= sizeof(x) ``` # 補充 - python四捨五入 python的四捨五入函式`round`是按照 Banker rounding的機制去跑的, **當最後一位是5** * 第一個數字 1.35 在 1.3 和 1.4 的正中間,round 到小數點後第一位,選擇偶數的 1.4。 * 第一個數字 1.25 在 1.2 和 1.3 的正中間,round 到小數點後第一位,選擇偶數的 1.2。 所以在python要精確地做到遠離0的四捨五入要透過套件 ```python= from decimal import Decimal, ROUND_HALF_UP n = eval(input()) k = Decimal(str(n)).quantize(Decimal('0.01'), rounding=ROUND_HALF_UP) if k==-0.00: print("0.00") else: print(k) ``` https://medium.com/%E7%A8%8B%E5%BC%8F%E4%B9%BE%E8%B2%A8/python-round-%E5%9B%9B%E6%8D%A8%E4%BA%94%E5%85%A5-%E7%9A%84%E5%B0%8F%E5%9D%91-7ef8accad931
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up