C 中,如何將LONG型轉換為float和double型

2021-03-29 12:58:23 字數 2877 閱讀 1962

1樓:匿名使用者

long a,b;

int c;

float d;

d=(double)1000*a/b;

這樣不用你的c了,或者你把c定義成double型別吧

2樓:du瓶邪

法1:itoa, ltoa(a表示array陣列的意思)標頭檔案:stdlib.h

示例:int a = 3;

long b = 23;

char buf1[30] = "";

itoa(a, buf1, 10);//10表示十進位制,buf1儲存的內容為"3"

char buf2[30] = "";

ltoa(b, buf2, 10);//10表示十進位制,buf2儲存的內容為"32"

方法2:sprintf

標頭檔案:stdio.h

示例:int a = 3;

float b = 4.2f;

char buf[30] = "";

sprintf(buf, "%d,%f", a, b);//buf儲存的內容為"3,4.2",可對比printf

方法3:ostringstream

標頭檔案:#include

using namespace std;

示例:int a = 3;

float b = 4.2f;

ostringstream s1;

s1

示例:int a;

float b;

istringstream s1("23 23.4");

s1>>a>>b;//對比cin

3樓:匿名使用者

實際處理中一般直接寫成(int)(1000.0*a/b)就可以

計算1000.0*a的時候因為1000.0是double所以a也自動轉換成double,1000.0*a的結果於是也是個double

4樓:匿名使用者

c=int((double)1000*(double)a/(double)b); 這種方法叫現式強制轉化。

不推薦使用。

如果要準確可以宣告的時候就把這3個變數宣告成float型的吖。

5樓:匿名使用者

long a,b;

int c;

c=1000*(float)(a/b);

這樣a/b得出的結果就會按浮點數給出,而不會捨去尾數,與設d效果相同。

ps:c++中的強制型別轉換函式是 (t)a ,函式返回一個轉換後的t型變數,其中t表示要轉換的型別,a是變數。如要把long型的temp轉換成double型,並賦給number,只需 number=(double)temp; 即可。

6樓:匿名使用者

因為a b是long 所以a/b這個表示式的結果一定是long型的,所以問題不在c上。要準確,必須a b 是float 或者 double型的

7樓:裝著很懂

c=int((double)1000*(double)a/(double)b);

c語言中long型轉換成float型怎麼轉換,假如數字較大時

8樓:匿名使用者

直接用(float)a轉換,只是精度會有下降,在32位系統中float有1個符號位+8個2的冪次位+23個精度位=32位,long有1個符號位+31個精度位=32位,有效數字會有損失。

c++中字元型和int型,float,double之間的轉換? 5

9樓:仙人掌的憂傷

c++中資料來型別的轉換

一般源分為隱含轉換和強制轉換兩種bai。

隱含轉換:du算術運算zhi符 關係運算子 邏輯dao運算子賦值運算子等二元運算子要求兩個運算子的型別一致,算術運算關係運算中參與運算的型別不一致時要進行隱含轉換。

支援繼承和重用:在c++現有類的基礎上可以宣告新型別,這就是繼承和重用的思想。通過繼承和重用可以更有效地組織程式結構,明確類間關係,並且充分利用已有的類來完成更復雜、深入的開發。

新定義的類為子類,成為派生類。它可以從父類那裡繼承所有非私有的屬性和方法,作為自己的成員。

10樓:匿名使用者

c++中資料型別的轉換一般分為隱含轉換和強制轉換兩種;

(1)隱含轉換

算術運算子 關係運內算符 邏輯運算子賦容值運算子等二元運算子要求兩個運算子的型別一致,算術運算 關係運算中參與運算的型別不一致時要進行隱含轉換,原則是將低型別轉化成高型別(型別越高資料精度越高,double>float>unsigned long>long >int>short>char>)這種轉化是電腦自動完成,是安全的,資料精度沒有損失;

注意:邏輯運算子要求草錯書讀是bool型,如不是則系統中地轉換成bool型,非0資料轉換成true,0轉化成false;

(2)強制轉換

一般涉及到將高型別轉化成低型別時使用,不安全,可能在精度的損失,有兩種方法

1型別說明符(表示式)//c++強制轉化符號2(型別說明符)表示式 //c強制轉化符號;

如 float z=7.56;

int a;

a=int(z);或a=(int)z;

11樓:匿名使用者

直接強制轉換不可以嗎?

12樓:孤鬆獨海

高精度float double會自動轉換,不過也可以(int) 這樣強制轉換,只能高精度向低精度轉換,反之不可以,三者高低排列為double>float>int

13樓:絲煙抹茶

int是整型,float可以小數,double是好像範圍更大,記不清了

c語言如何將字元型的數字轉換為十進位制或八進位制或十六進位制的數

字元型的數字轉為十進位制的數是用這個字元 0 即可,反過來就是 0 僅適用0 9的數字。轉八進位制和十六進位制需要通過十進位制進行轉換。c語言有轉換說明符 轉換說明符 a a 浮點數 十六進位制數字和p p 記數法 c99 c 字元 d 有符號十進位制整數 f 浮點數 包括float和doulbe ...

C 字元轉數字問題,c 如何將字串轉換為數字?

public string convertstring string value,int frombase,int tobase int intvalue frombase return tobase 各種型的數字之間的轉換,引數 value 傳入的值,frombase 傳入的型別,tobase需要...

matlab中如何將字串轉換為命令控制字

eval 這個函式滿足你的要求。如 str1 set text1,string a 1 eval str1 相當於執行了這個語句。請問你這裡的text1是什麼?物件?普通變數?物件的handle?你在引用text1之前,text1是否已經存在?字 符 串 轉 換 abs字串到ascii轉換 dec2...