浮點列印源碼
Ⅰ c需要中的列印浮點數,printf("%3.2f",123.455)其中3代表什麼那2呢
3表示字元串總長度,包括小數點和尾數。
2表示小數尾數長度。
當不足長度時會自動擴充,默認右對齊左邊補充空格。
printf("%7.2f",123.455f);//正確的長度應該是7
printf("%8.2f",123.455f);//長度不足8,所以左邊補一個空格
printf("%-8.2f",123.455f);//左對齊,所以右邊有一個空格
printf("%7.2lf",123.455lf);//指定輸入的字元串是(double)類型,按照(longdouble)8位元組解釋
//數字後面的f,lf分別表示這是一個float或者double類型的數
//建議手動指定類型以防止編譯器解釋錯誤
//gcc和vc解釋的結果就不一樣
Ⅱ printf函數浮點數的輸出
自己寫很麻煩,涉及機器內浮點數寫法定義(IEEE 754 浮點數表示法),涉及10進制到2進制,再由2進制轉10進制轉換和截斷誤差。
投機取巧辦法如下:
#include <stdio.h>
main()
{
float x=12.34;
char str[30];
int i,L;
sprintf(str,"%g",x);
L = strlen(str);
for (i=0;i<L;i++) putchar(str[i]);
return 0;
}
Ⅲ C語言輸出 浮點型數據輸出
##include<stdio.h>
intmain(intargc,char**argv)
{
doublet;
ints,m;
scanf("%d",&m); //占的位數,這個你可以不要
printf("保留小數位數:");
scanf("%d",&s);
printf("輸入數據:");
scanf("%lf",&t);
printf("%*.*lf
",m,s,t);//就小數的話就寫"%.*lf
"
return0;
}
Ⅳ java浮點數輸出問題
你定義的f=0.8891406,是浮點數,
f*math.pow(2,32)執行完還是一個浮點數,由於浮點數表示,其結果超出了浮點數表示的范圍,就會損失精度。你可以看一下f*math.pow(2,32)結果是一個整數,所以最終結果為0
你把f=0.8891406,聲明為double類型就ok了
Ⅳ 編寫一個程序,從用戶那裡讀取100個浮點值,並列印輸入的最低值、最高值和平均值
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
double min = sc.nextDouble();
double max = min;
double mid = min / 5;
for (int i = 1; i < 5; i++) {
double tmp = sc.nextDouble();
if (tmp < min) {
min = tmp;
}
else if (tmp > max) {
max = tmp;
}
mid += tmp / 5;
}
System.out.println("min: " + min
+ "\nmax: " + max
+ "\nmid: " + mid);
}
}
Ⅵ 如何用c實現printf里的浮點數的輸出就是如何用c寫出printf.....哪位大俠幫幫我,淚目
標明輸出變數的輸出類型符,printf("%d」,變數)這是輸出整型變數,浮點型用%f 。字元型有%c。如果標錯輸出就不對了
Ⅶ 浮點數 取一定位數的小數,比如a=1.23456f 取成a=1.23f ,C或C++源代碼怎麼寫
cout<<"a: "<<fixed<<setprecision(2)<<a<<endl;
a取2位小數;
setprecision()取有效數字
fixed定小數點
沒有fixed結果為1.2
Ⅷ C語言 printf %x輸出浮點數
可以這樣
printf("%x", *((int*)(&a)));
或者
uniont
{
inta;
floatf;
};
uniontm;
m.f=1.0;
printf("%x",m.a);