算術運算子

加減乘,與其它程式語言一模一樣,不會有問題。

+ - *

除法 / 與 整除//

運算子 描述 範例 傳回值型別
/ 8/2 = 1.8 浮點數float
// 整除 8//2 = 1 整數int
% 餘數 -38 % -6 = -2 整數int
** 次方 2**4 = 16 整數int

除法 回傳小數(float)

python的除法會回傳小數點,並且型別變成float。
以下的程式碼,傳回1.8

1
2
var1 = 9 / 5
print("var1 type", type(var1), "var1 = ", var1)
var1 type <class 'float'> var1 =  1.8

若改為可以整除的算式,回傳的值仍是有小數點。

1
2
var1 = 8 / 2
print("var1 type", type(var1), "var1 = ", var1)
var1 type <class 'float'> var1 =  4.0

與C++比較除法

1
2
3
4
5
int main() {
  int var1 = 9 / 5;
  cout << "var1 = " << var1 << endl;
  return 0;
}
var1 = 1

9改成9.0浮點數,結果才會是有小數點的浮點數。

1
2
  double var1 = 9.0 / 5;
  cout << "var1 = " << var1 << endl;
var1 = 1.8

與Java比較除法

Java的除法是去掉小數點,即便接收的計算結果的型別是double,仍是輸出整除的商數。

1
2
3
4
int i = 10 / 4;
System.out.println(i);
double d = 10 / 4;
System.out.println(d);
2
2.0

除非把除數或被除數改為浮點數,結果才會是有小數點的浮點數。

1
System.out.println(10 / 4.0);
2.5

整除// 回傳int

9 / 5 = 1.8

整除//傳回小於或等於 1.8 的整數1,無條件去掉小數。

以下程式碼整除//傳回 <= 1.8 的「整數」,可以看出執行結果的差別嗎?

1
2
3
4
var1 = 9 / 5
var2 = 9 // 5
print("var1 type", type(var1), "var1 = ", var1)
print("var2 type", type(var2), "var2 = ", var2)
var1 type <class 'float'> var1 =  1.8
var2 type <class 'int'> var2 =  1

負數整除

負數整除,會傳回「小於」或「等於」的整數(包含負號),無條件去掉小數。
以下程式碼, -9 / 2 = -4.5,「小於」或「等於」-4.5的整數(包含負號)是-5。

1
2
3
4
var1 = 9 // 2
var2 = -9 // 2
print("var1 type", type(var1), "var1 = ", var1)
print("var2 type", type(var2), "var2 = ", var2)
var1 type <class 'int'> var1 =  4
var2 type <class 'int'> var2 =  -5

餘數公式

C++, Java餘數公式,切記先乘除 後加減,以下沒有括號比較好記。

a % b    = a - a / b * b

加上括號

a % b    = a - ((a / b) * b)
-38 % -6 = -38 - ((-38 / -6) * -6) = -2

Python要改為整除

a % b    = a - ((a // b) * b)
-38 % -6 = -38 - ((-38 // -6) * -6) = -2
1
2
var2 = -38 % -6
print("var2 type", type(var2), "var2 = ", var2)
var2 type <class 'int'> var2 =  -2

次方**

2 ** 4 = 16

\(2^4 = 16\)

2的4次方為16

1
2
var1 = 2 ** 4
print("var1 = ", var1)
var1 =  16

results matching ""

    No results matching ""