起因是我做了一個分數化小數的題目,并學到了用變數控制精度。
即: printf("%.*lf",n,x); n會自動取代那個*,從而控制了精度。x為待輸出變數。
題目

但之后我卻發現了對于不同庫檔案的引入竟然會影響到double變數的有效位數。
注:請忽略我盡管用C++,但仍然用了scanf和printf,這是在控制變數。
代碼:
//C++
#include<bits/stdc++.h>
using namespace std;
int main()
{
int a,b,c;
while(scanf("%d %d %d",&a,&b,&c)!=EOF && !(a==0&&b==0&&c==0))
{
double result = 1.0*a/b;
printf("%.*lf\n",c,result);
}
return 0;
}
//輸入 8 3 33
//輸出 2.666666666666666518636930049979128
//----------------------------------------------------
//C語言
#include<stdio.h>
int main()
{
int a,b,c;
double result;
while(scanf("%d %d %d",&a,&b,&c)!=EOF && !(a==0&&b==0&&c==0))
{
result = 1.0*a/b;
printf("%.*lf\n",c,result);
}
return 0;
}
//輸入 8 3 33
//輸出 2.666666666666666500000000000000000 (顯然丟失精度了)
想問一下論壇的大佬們,這是為什么呢? 為什么不同庫檔案的引入會導致double的有效位數變化,是在那個C++的萬能頭檔案中有什么東西起作用了嗎?
我的編譯器是: Dev-c++
gcc 版本: gcc version 3.4.5 (mingw-vista special r3)
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/18005.html
標籤:C++ 語言
上一篇:線性表的并集
