c中int向float型轉換

時間 2021-10-26 10:30:32

1樓:春天的離開

c#中int向float型轉換:

1、用convert方法。convert.toint32(string),括號裡的是需要轉換的字串。

2、int32.parse(string)和int.parse(string)。

3、int32.tryparse(string,out int result)或int.tryparse(string,out int result)來轉換。

tryparse的返回值是一個bool型別的值,指示是否轉換成功,轉換成功後第二個引數就是已經轉換成功的值:

int result;

if(int32.tryparse("20", out result))

else

擴充套件資料

當在int(假設int是32位的)、float和double格式之間進行強制型別轉換時,原則如下:

從 int 轉換成 float,數字不會溢位,但是可能被舍入。

從 int、float 轉換成 double,能夠保留精確的數值。因為 double 有更大的範圍和更高的精度(有效位數)。

從 double 轉換成 float,因為 float 範圍要小一些,所以值可能溢位成 +∞ 或 -∞。另外由於float精度較小,還可能被舍入。

從 float、double 轉換成 int,值將會向零舍入。如1.999會被轉成1,-1.999會被轉成-1。同時值可能會溢位。

2樓:匿名使用者

float的精度是指有效數字的位數,不一定是指小數點後位數。float型資料也是用32位儲存,由於有階碼,所以損失了部分精度。

3樓:三根鞋帶

float的儲存位是32位元,定義其為7位有效數字,這裡的7位有效數字是說精度,不是說範圍.

你可以使用double或decimal

其中double也使用double.tostring("0.000");來控制精度

4樓:匿名使用者

樓主觀察很細微啊。int到float轉換精度會降低,如果需要較高精度,應該考慮使用double型別。如下分析:

第一點:從int(system.int32)到float轉換精度會降低。如下**:

static void main(string args)

輸出為:

2147483647

2.147484e+09

明顯有效位數減少。

第二點:msdn中有如下描述:

可在一個表示式中兼用數值整型和浮點型。在此情況下,整型將轉換為浮點型。根據以下規則計算表示式:

如果其中一個浮點型為 double,則表示式的計算結果為 double 型別,在關係表示式或布林表示式中為 bool 型別。

如果表示式中不存在 double 型別,則表示式的計算結果為 float 型別,在關係表示式或布林表示式中為 bool 型別。

這樣,如果表示式中只有int和float,可能得不到應有的精度,因此應該考慮將float轉成double之後再進行運算。

共同**~~

請教高手c# 中double 向 float 型別怎麼轉換啊??

5樓:大野瘦子

有兩種:

1、隱式轉換是直接轉換 。例如:

int i = 34;

long j = i;

2、顯式轉換包含有強制型別轉換。 例如:

double j=3.14;

j=(float)j;

6樓:匿名使用者

c# 支援兩種型別的轉換,隱式轉換和顯式轉換。

⑴隱式轉換是直接轉換 。例如:

int i = 34;

long j = i;

⑵顯式轉換包含有強制型別轉換。 例如:

double j=3.14;

j=(float)j;

7樓:匿名使用者

float testfloat=0;

if(float.tryparse(doublevalue,out testfloat))

else

8樓:青花惡魔

convert.tosingle()

9樓:匿名使用者

1.convert.tofloat()

2.float.parsh()

10樓:匿名使用者

convert.tofloat()

c#浮點型顯示轉換為整型時為什麼是捨去小數部分?

11樓:

c#浮點型顯示轉換為整型是取整整的,會強制轉換捨去小數部分。

這個賦值會把堆疊中的運算結果值存入變數,在這個過程中,實際的值應該是x=70074.996948242188,而因為精度問題,存入c的值是c=70075.0。

例:擴充套件資料使用注意事項

單精度浮點數只有7位(十進位制)左右的精度,如果將其乘以1000,那麼誤差也就擴大1000倍。然後又把float直接截斷為int32數字。有這樣粗放的演算法,那麼這種精度損失,是很正常的,最終在int32的值上只看到4為有效數字了)。

.net在不同系統版本下、不同cpu下,編譯出來的**是不同的。而不同cpu對於指令的處理肯定也是不完全相同的。

即使是.net2.0framework,用11、12年前的與2023年是隨現在的軟體包而釋出的.

net2.0,相信它的jit編譯出的**也是有差異的。相信最近這些年的.

net在保證運算效率的基礎上,也能稍微提高一些精度。

12樓:匿名使用者

那要看你如何轉換了

如果使用(int)

比如:double b = 12.6; int a = (int)b; // 此時a的值為12

如果使用convert

比如:double b = 12.6; int a = convert.toint32(b); //此時a的值為13

根據需求靈活運用需要的轉換型別提升精度

13樓:

所謂整形那肯定就是整形啦 是會直接去掉的, 要保留小數點之前的 而且四捨五入的話 你手動做吧 四捨五入

14樓:匿名使用者

c#中的轉換整形是去整的啊,不是四捨五入的

請問C的float如何轉換為int

四舍 入 int到float轉換精度會降低,如果需要較高精度,應該考慮使用double型別。如從int system.int32 到float轉換精度會降低,如下 static void main string args int32 number int32.maxvalue console.wri...

在C中如何將INT型資料強制轉換為STRING型

int 是數,string 是字串,不能轉換的你需要的是將數值以字串方式表達 應該這樣 int a 3 string str a.tostring orint a 3 string str convert.tostring a 我是不是多此一舉啊?呵呵 奚雪瑤鄢奧 int.parse 方法或者 in...

在C語言中float與int有什麼不同

float是浮點型,int是整型,float max是定義一個浮點型的變數,名字叫做max 井鈺 其實,你要知道區別的話,很簡單的 相同點 他倆都是基本資料型別.都可以定義該型別的變數不同點 定義變數時,int型別變數和float型別變數所佔用的空間大小不同這個與你的機器有關,看它的字長是多少位的,...