C++ 整除 1/2 得什么


 

今天改一段小代碼,發現怎么改都沒用,公式重推了一遍,還是沒問題。后來發現是整除忘了轉換類型了:

        printf("=======================\n");
        printf("=======================\n");
        printf("=======================\n");
double aaaaa;
double bbbbb;
aaaaa=1/2;

        printf("1/2 is= %.8le\n\n",aaaaa);
bbbbb=0.5;

        printf("0.5 is = %.8le\n\n",bbbbb);


        printf("=======================\n");
        printf("=======================\n");
        printf("=======================\n");

后來快放棄的時候才發現,原來是整數類型和浮點型不通,整數除以整數得整數,也就是說 1/3 得零,2/3 也得零

於是測試輸出:

=======================
=======================
1/2 is= 0.00000000e+00

0.5 is = 5.00000000e-01

=======================
=======================
=======================

因此盡量避免 整數除以整數,比如說改成:

1.0/2
或者:
1.0/2.0

變量的話,可以使用強制類型轉換:

#include <stdio.h>

main()
{
   int sum = 17, count = 5;
   double mean;

   mean = (double) sum / count;
   printf("Value of mean : %f\n", mean );

}

當上面的代碼被編譯和執行時,它會產生下列結果:

Value of mean : 3.400000


 如果不使用類型轉換,結果為 3

 

If you want to get right result you need to write:

#include <iostream>

using namespace std;

int main()
{
  double test = ((double)1 / 2) * 2;
  cout << test << endl;
  return 0;
}

 

 

可以參考:

C++整除:

https://zhidao.baidu.com/question/239931071.html

強制類型轉換:

https://www.cnblogs.com/bytebee/p/8535552.html

 stack flow 上:

https://stackoverflow.com/questions/30188016/c-why-does-1-2-2-return-0

 

加油~

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM