php整數用強制轉換命令 double 轉換為浮點數

2022-09-11 03:05:19 字數 4398 閱讀 6492

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語言將英文月份轉換為數值月份

scanf s d d m,day,year int t 1 避免他預設為0.int month t strcmp jan m 判斷兩個字串是否相等,相等就返回一個0.if t 0 怎麼組織下,你自己看吧 呼叫日期函式直接獲取當前日期,結果可以為數值。如果自己定義,可以考慮用列舉型別一一對映。c語言...

如何把EXCEL用公式計算的數轉換為可以複製貼上的數呢

選擇性貼上為 數值 如圖所示 試試吧,但願能夠幫助您!公式計算完的數,你複製一下,貼上時,選擇 選擇性貼上 選一下項 數值 就可以。複製 在所在貼上的單元格右鍵單擊 選擇性貼上 數值。使用選擇性貼上 數值 excel版本參考 2010 1 選中公式區域 2 右擊 複製 3 右擊選擇性貼上 數值 右擊...

我用wps將轉換為pdf後,為什麼有部分文字看不到

軟體故障,或者文字顯示不正常,換用其他字型來顯示 更換顯示pdf的軟體 更換doc2pdf軟體,推薦用adobe的acro bat軟體 具體問題搞不清,但是建議你以後用 foxit reader轉換。pdf檢視器存在點小問題,更換好的檢視器 強烈推薦用adobe acrobat 你好,wps2019...