2013-02-26 92 views
1

'x''y'都是int時,我必須將方程a = x * 9/y的輸出設置爲浮點型。例如x=64 y= 227但是當輸入到公式時,我得到的是2而不是十進制答案。如何將int整型應答轉換爲浮點數

我怎麼有它編碼:

int y = 227; 
int x = 64; 
Float a; 
a = x * 9/y; 
+2

什麼編程語言? – 2013-02-26 08:06:47

+0

是的Mike指定你的語言。添加標籤。 – 2013-02-26 08:11:32

+0

@Mike Hirt,如果你閱讀下面的答案,你會感到困惑。因此只要做到這一點浮點數a = x * 9 /(float)y;因爲得到一個十進制結果,右側必須是雙精度或浮點數。在你的情況下,使右側小數,除以(浮點數)y – 2013-02-26 08:49:18

回答

1

你需要的類型轉換爲float:

a = (float)x * (float)9/(float)y; 

不知道你用的是什麼語言,但我對於寫C語言的

我所做的就是所謂的顯式鑄造

顯式鑄造(給定轉換)的數據類型具有更高的優先級,然後自動轉換。

Syntax: 

    (data_type) operand 

操作數可以是可變的或短語。

@yBee回答了什麼。
他正在使用的概念隱式鑄造通過將9更改爲9.0f在你的表達(x * 9.0f)成爲浮動和浮動浮動int再給浮動。

要理解這一點,你需要知道自動型鑄造:

隱式轉換(自動轉換)的工作方式是長度爲較小的數據類型的變量(操作)(比數據第二個變量的類型)(操作數),內部轉換爲具有更長數字長度的數據類型的變量。這聽起來可能混淆,但這裏有一個例子:

short int - >int - >unsigned int - >long int - >unsigned long int - >float - >double - >long double

什麼@Alexei Levenkov做的是?
使用這兩種技術。首先通過顯式投射將x轉換爲浮點,然後由於隱式投射而發生浮點計算。

其實這兩個答案都比我的回答更好。

2

一個數應該是浮點型的,以便有效鑄造:a = x * 9.0f/y;

+0

嗨,我認爲只有'9f'就夠了。 +1 ..很好回答。也寫理由這樣做。 – 2013-02-26 08:08:42

+0

@GrijeshChauhan:我改正了,因爲C語言不允許9f。我們不知道它是什麼語言。 – 2013-02-26 08:10:17

+0

是的你是對的。順便說一句,我解釋你的答案但信貸給你。 – 2013-02-26 08:28:28

1

在大多數語言具有類型「浮動」的表達的至少一種元素將使float類型的整體表達:

a = x * 9.0/y; 

您也可以投一些mebers明確(取決於languge語法):

a = (Float)x * 9/y; 

注意,如果操作的優先級不TH相同(即+和*在同一個表達式中),你可能會密切關注你想要表演的內容。下面的表達式都可能產生不同的結果(如第一個會做x/9爲整數,然後纔將它轉換爲「浮動」):

a = x/9 + (Float)y; 
a = (Float)x/9 + y; 
+0

+1對於'操作的優先級不一樣'點。問題的最佳答案。 – 2013-02-26 08:34:03

0

好,得到小數的答案,當你用一個整數設備的任何數量的數字,右側必須是浮點數或雙精度數。是這樣的

10/3 = 3

10/3.0 = 3.34

明白了嗎?

你的情況,你可以做的是,

int y = 227; 
int x = 64; 
Float a = x * 9/(float)y; 
0

一個簡單的方法是用1.0只乘最終結果。這會爲你轉換它。