1. 程式人生 > >C語言printf(""),浮點數列印保留有效位數,小數部分的四捨五入

C語言printf(""),浮點數列印保留有效位數,小數部分的四捨五入

1.printf("%3.0f",floatNum):不保留小數

說明:%3.0f表明待列印的浮點數(floatNum)至少佔3個字元寬,且不帶小數點和小數部分,整數部分至少佔3個位寬;

注意:這裡的3只代表整數部分至少佔3位,捨棄小數點和小數點後面的部分

2.printf("%6.2f".floatNum):保留兩位小數

說明:%6.2f 表明待列印的數(floatNum)至少佔6個字元寬度(包括兩位小數和一個小數點),且小數點後面有2位小數,小數點佔一位,所以整數部分至少佔3位。

注意:這裡的6是待列印的數至少佔據的字元寬度,包括兩位小數(如果小數不夠兩位用0補位,例如100.1打印出來為100.10)和一個小數點,所以整數部分至少佔3個字元寬度。

3.單精度實數的有效位數一般為7位,輸出6位小數,超出有效位數輸出就是錯誤的。

4.雙精度數有效位數一般為16位,輸出6位小數,超出有效位數可能截斷或錯誤值。

5.關於保留小數點後有效位數四捨五入原則

#include<stdio.h>

int main()
{
	
	printf("%f\n", 100.00);
	printf("%.0f\n", 100.00);
	printf("\n");

	printf("%f\n", 100.30);
	printf("%.0f\n", 100.30);
	printf("\n");

	printf("%f\n", 100.50);
	printf("%.0f\n", 100.50);
	printf("\n");

	printf("%f\n", 100.53);
	printf("%.1f\n", 100.53);
	printf("\n");

	printf("%f\n", 100.55);
	printf("%.1f\n", 100.55);
	printf("\n");

	printf("%f\n", 100.56);
	printf("%.1f\n", 100.56);
	printf("\n");

	printf("%f\n", 100.563);
	printf("%.2f\n", 100.563);
	printf("\n");

	printf("%f\n", 100.565);
	printf("%.2f\n", 100.565);
	printf("\n");

	printf("%f\n", 100.566);
	printf("%.2f\n", 100.566);
	printf("\n");
	return 0;
}
執行結果:

注意:從圖中可以看書,保留0位小數的時候,只要小數點後第一位>=5,就可以進位,但是保留1位或者2位等等,保留小數的後一位要>5才可以進位,否則就捨去。

我是根據執行結果看到,有可以解釋下的,請留言,謝謝!

相關推薦

C語言printf("")點數列印保留有效位數小數部分四捨五入

1.printf("%3.0f",floatNum):不保留小數 說明:%3.0f表明待列印的浮點數(floatNum)至少佔3個字元寬,且不帶小數點和小數部分,整數部分至少佔3個位寬; 注意:這裡的3只代表整數部分至少佔3位,捨棄小數點和小數點後面的部分 2.printf

平方根的C語言實現(一) —— 點數的存儲

調整 進制 print 十進制 項目 inf 十分 變量 -1   曾經做一個硬件成本極度控制的項目,因為硬件成本極低,並且還需要實現較高的精度測量,過程中也自己用C語言實現了正弦、余弦、反正切、平方根等函數。   以下,無論是在我的實際項目中還是本地的計算機系統,int都

C語言基礎: 點數轉化整數(向上取整、向下取整)| 求絕對值函式

Objective-C拓展了C,自然很多用法是和C一致的。比如浮點數轉化成整數,就有以下四種情況。  1.簡單粗暴,直接轉化 float f = 1.5; int a;a = (int)f; NSLog("a = %d",a); 輸出結果是1。(int)是強制型別轉化,丟棄浮點數的小數部分。

C++點數輸出 保留有效數字位數設定

setprecision(n)的運用 標頭檔案: #include <iomanip> cout後面新增: <<setprecision(3)              //setprecision的意思為「設定精度」,括弧內的數字自定。 //輸出採

平方根的C語言實現(一) —— 點數的儲存

  曾經做一個硬體成本極度控制的專案,因為硬體成本極低,並且還需要實現較高的精度測量,過程中也自己用C語言實現了正弦、餘弦、反正切、平方根等函式。   以下,無論是在我的實際專案中還是本地的計算機系統,int都是4個位元組且機器為小端,除非特別提及,否則都如此預設。按理fl

dev編譯器:c++如何讓其輸出小數16.84點數型別資料!

devc++,也不知道是我不會用,還是他的BUG~ 竟然不可以輸出浮點數! 想要輸出浮點數,不可以直接用C++裡的 cout<<a<<""; 需要改用: printf(""); 程式碼: #include<iostream> using namespace st

C點數轉二進位制數(正負數均可)

#include "stdafx.h" int Float2Binary(const double src, char* dest, int* len) {     int intNum = 0;     double floatNum = 0.0f;     int i=

表示式求值(C實現實現多括號點數)---棧的實現以及運用。

剛學完棧的時候寫的,主要鍛鍊下棧的C實現吧! //棧用單鏈表來實現 #include<stdio.h> #include<stdlib.h> #include<ctype.h> #include<math.h>

C++中將點數強制轉換為整數做了些什麼——ftol註釋

_ftol2: 0040142C 55 push ebp 0040142D 8B EC mov ebp,esp 0040142F 83 EC 20 sub

C語言printf 列印十六進位制數字0x01

      串列埠列印除錯資訊,有一段為輸出十六進位制地址的列印,%x輸出顯示為:0x1,而不是0x01,因此找到解決的方式如下:改為:%02x即可。 程式碼段如:       printf("\r

C語言——printf列印字串(關於資料在記憶體中儲存格式的體現)

PS:本篇文章,是筆者在C語言學習過程中的所產生疑惑的地方,經過查閱相關資料得出的結論,如有錯誤的地方,還望指出改正。 int 佔4個位元組, 這裡輸入的8位16進位制數每相鄰兩位數代表一個位元組。如:44,43,42,41 int b = 0x414

c語言編寫程式“輸入任意一個年份和月份列印當月日曆。”

日常生活中我們所見到的日曆如圖所示: 程式碼思路: 1. 我們想列印某年某月的日曆,我們就得知道這個月是從星期幾開始,且這個月有多少天。 2. 要想知道這個月是從星期幾開始的,就得知道上一個月的最後一天是星期幾,要想知道上一個月的最後一天是星期幾,就得

C語言printf()函數具體解釋和安全隱患

color getc .net 正常 world! print hello mat 內容 一、問題描寫敘述 二、進一步說明 請細致註意看,有例如以下奇怪的現象 int a=5; floatx=a;

程序員之---C語言細節12(指針和數組細節&quot;//&quot;的可移植性說明)

[1] watermark popu i++ gravity 移植 char dsm 指針 主要內容:指針和數組細節,"//"的可移植性說明 #include <stdio.h> int main(int argc, char

理解C#語言中的類型轉換----初學者的理解請大神指教

寫代碼 需要 con c# 初學 har 3.1 parse 範圍 一下都是在視頻教學中學到後的理解,如果說錯了請大神指教 C#語言中的類型轉換,就是將某個數據要轉換成另一個類型的數據。 c#語言中的數據類型主要有: char類型(字符類型); string類型(字符串類型

C語言程序】今天是祖國母親的生日特意編寫一個小程序為祖國母親慶生~

一個 img ges birt efi people print log blog #include <stdio.h>#define N 80 int main(int argc, char *argv[]) {char a[N];printf("Hello,

關於c語言內存分配,malloc,free,和段錯誤內存泄露

今天 text new .net 決定 析構函數 靈活 如果 best 1. C語言的函數malloc和free (1) 函數malloc和free在頭文件<stdlib.h>中的原型及參數 void * malloc(size_t size

【轉】C語言 printf格式控制符 完全解析

china int 數字 大於 轉換 OS 組成 字符數 無符號 printf的格式控制的完整格式:% - 0 m.n l或h 格式字符下面對組成格式說明的各項加以說明:①%:表示格式說明的起始符號,不可缺少。②-:

C語言printf函數轉換說明表及其修飾符表

bsp splay int 函數轉換 isp 語言 auto mage 及其   ANSI C標準為printf( )提供的轉換說明 C語言printf函數轉換說明表及其修飾符表

C語言--函數的調用調用過程棧幀的創建和銷毀。

調用函數 棧頂指針 第一個 可執行 創建 執行 過程 臨時變量 變量 函數在內存中到底是怎麽經過一系列過程調用的呢? 指針寄存器esp,ebp1. 首先先搞清楚函數調用中兩個非常重要的指針寄存器esp,ebp。對這兩個寄存器的一些理解:esp為棧指針,用於指向棧的棧頂eb