2013-02-26 72 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只乘最终结果。这会为你转换它。