1樓:義烏人才網
要用printf格式化輸出。
php好像不需要強制轉化型別,會自動轉化的。
2樓:手機使用者
php好像不需要強制轉化型別,會自動轉化的。
3樓:匿名使用者
number_format($score,'2','.',',')
4樓:愛笑的柯南推理
這裡以c語言的浮點數為例,在ieee浮點標準下,整數轉換為浮點數的過程做一些直觀的分析和具體的實現,ieee浮點數的標準細節詳見(http://en.wikipedia.
org/wiki/ieee_754-2008)。
在c語言中,使用float和double型別資料分別對應單精度和雙精度的浮點格式。以float為例,由於float是32位,int在32位機器上也是32位。因此,float必然不能對所有的int進行準確的表示。
實際上,在數軸上,浮點數所能表示的數呈非均勻的分佈。舉例如下圖。
. . -3 .
. . .
-2 . . .
-1..........0.........1..
. . .
2 . . .
3. .
圖中的點代表float可表示的數,可以看出,在所能表示的數中,接近0的比較密集,遠離0的則步長逐漸增大。具體的步長可以根據浮點數標準算出。
以float為例,符號位1位,階碼8位,位數23位。由ieee浮點的標準可知,非規格化數表示那些非常接近0.0的數。這時候,階碼域全為0.因此,非規格化數的步長為
2-23×2-127 ≈ 1.4×10-45
而非規格化數的範圍則約等於 -1.2×10-38 到1.2×10-38 在這個範圍內,float能表示的數呈均勻分佈。
而int則處在規格化數的範圍內。對於規格化數,步長不均勻。步長可表示為
2-23×2e
其中,e的取值範圍是-126~+127。顯然,隨著e增大,步長增大。因此,對於越遠離0的區域,步長越大。當e = 30時,步長為128。如下程式是一個驗證。
其中,浮點數表示2的30次方,剛階碼值e=30,程式中a陣列記錄x每次加一的結果,從輸出中可以看出,因為步長為128,在0-64次相加中,並沒有改變a[i]的值,而在後64次相加中,a[i]則保持為2的30次方+128。
因此,除了不均勻的步長以外,還需要考慮的是舍入的問題。由上面的測試中可知,c語言的舍入方法中,若整數處於步長的前半,則向下舍入,否則向上舍入。而對於剛好處於中間的數,例如上圖中a[64],這種與前後的可取的數距離相等,則採用向偶數舍入的原則。
即取表示成float形式後,最後一位為偶數(0)的數。
分析到此,開始實現,說白的就是實現一個 float f = float(integer)的功能。函式原型如下:
unsigned float_itof(int i)
把整數i轉換為float的表示形式,然後返回對應的4個位元組。函式中不能使用float型別及其運算。
**如下:
[cpp] view plain copy
unsigned float_i2f(int i)
unsigned x,e,e;
int count;
unsigned j;
unsigned low,high;
count = 0;
x = 0;
if(i==0)
return x;
//float不採用補碼,正負數根據第一位符號位決定
if(i<0)
i = -i;
x = x|0x80000000;
j = i;
//整數均為規格化數,先進行移位
j = j<<1;
count++;
j=j<<1;
//求出階碼
e = 32-++count;
e = e+127;
//小於2的24次方,把階碼和有效位填入,完成
if((i&0xff000000)==0)
x = x|(e<<23);
x = x|(j>>9);
return x;
//大於2的24次方,要進行舍入
else
j=j>>count;
//high low即進位或捨去尾數
low = j&(~((1<<(e-23))-1));
high = low+(1<<(e-23));
//偶舍入原則
if(j-low>high-j)
j = high;
else if(j-lowj = low;
else if((low&(1<<(e-23)))==0)
j = low;
else
j = high;
if((((low>>
e++;
//填入各位,完成
x = x|(e<<23);
x = x|((j>>(e-23))&0x7fffff);
對輸入i進行 int_min 到 int_max的範圍測試,與float(i)的結果逐位元組比較。**正確。
閱讀更多
php怎麼強制轉換浮點成整形
5樓:良玉小帝
浮點轉換成整型有三種函式
1、floor ( float value) 捨去法取整又稱向下取整,將小數部分捨去取整
<?php
echo floor(6.1); //結果是6echo floor(6.9);//結果是6?>
2、ceil 進一法取整,有小數部分則進一位<?php
echo ceil(6.1); //結果是7echo ceil(6.9);//結果是7?>
3、round 浮點數進行四捨五入
<?php
echo round(6.1); //結果是6echo round(6.9);//結果是7?>
php中整形轉換為浮點型,並精確的小數點後兩位
6樓:it互聯天下
php 中sprintf函式可以將整數格式化為浮點格式。比如格式化引數:%nf;其中,n 表示小數點後的位數。比如:
<?php
$num=9.8;
$res=sprintf("%.2f", $num);
//輸出:9.80
?>
7樓:
試試看吧,number_format(10000, 2, '.', '');//10000.00
php中浮點型怎樣轉化成整型
8樓:匿名使用者
浮點轉換成整型有三種函式
1、floor ( float value) 捨去法取整又稱向下取整,將小數部分捨去取整
<?php
echo floor(6.1); //結果是6echo floor(6.9);//結果是6?>
2、ceil 進一法取整,有小數部分則進一位<?php
echo ceil(6.1); //結果是7echo ceil(6.9);//結果是7?>
3、round 浮點數進行四捨五入
<?php
echo round(6.1); //結果是6echo round(6.9);//結果是7?>
php中如何把零轉化為浮點數0.00?
9樓:優百文
php中需要格式化
$a=0;
$b=0.9;
echo number_format($a,2);
echo "---";
echo number_format($b,2);
10樓:
number_format函式
如$a=0;
echo number_format($a, 2);//第二個引數 為保留多少位小數
php怎麼將16進位制浮點型數字轉為十進位制
11樓:匿名使用者
步驟:1、234.324轉換為二進位制 11101010.01010…… 這會損失精度,別說不知道
然後科學計數法表示為,1.1101……*2^72、127+指數7 二進位制為100001103、【1101……】,0表示正數,中間為2步驟的二進位制,後面為23位科學計數法中的小數點後數字,不足後面補0
4,每4位轉換到一個16進位制數,0100 0011 0110 ……轉換
4 3 6 ……
c語言double強制轉換,c語言 double強制轉換int
風若遠去何人留 這都被你發現了 首先 float double這類的資料是近似值 有精度問題 這一點你知道吧 也就是說列印出來的8.0000 未必是8.00000在你這個例子裡面 我改了一下 改為列印出20位小數 include int main b 5 0 puts b 你再執行一下看看 可以發現...
C語言中如何將double型資料轉換為陣列
思路是 先將double型的數字整數部分變為整型數字一一取到陣列中去 用迴圈整除可以做到,比如double i 123.456,就可以先把整數部分用j int i強制型別轉換取出放入整型變數j中,再依次取到陣列a中 a k i 10 i 10 這兩句語句就可以做到 不過數字是倒序的,最後輸出時要注意...
c語言編寫函式對於任意輸入的整數轉換為
include stdafx.h vc 6.0 include stdio.h include string.h include stdlib.h char mychange char p,int n p j 0 return strrev p void main void include int6...