当'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;
当'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;
你需要的类型转换为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
转换为浮点,然后由于隐式投射而发生浮点计算。
其实这两个答案都比我的回答更好。
一个数应该是浮点型的,以便有效铸造:a = x * 9.0f/y;
嗨,我认为只有'9f'就够了。 +1 ..很好回答。也写理由这样做。 – 2013-02-26 08:08:42
@GrijeshChauhan:我改正了,因为C语言不允许9f。我们不知道它是什么语言。 – 2013-02-26 08:10:17
是的你是对的。顺便说一句,我解释你的答案但信贷给你。 – 2013-02-26 08:28:28
在大多数语言具有类型“浮动”的表达的至少一种元素将使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;
+1对于'操作的优先级不一样'点。问题的最佳答案。 – 2013-02-26 08:34:03
好,得到小数的答案,当你用一个整数设备的任何数量的数字,右侧必须是浮点数或双精度数。是这样的
10/3 = 3
10/3.0 = 3.34
明白了吗?
你的情况,你可以做的是,
int y = 227;
int x = 64;
Float a = x * 9/(float)y;
一个简单的方法是用1.0只乘最终结果。这会为你转换它。
什么编程语言? – 2013-02-26 08:06:47
是的Mike指定你的语言。添加标签。 – 2013-02-26 08:11:32
@Mike Hirt,如果你阅读下面的答案,你会感到困惑。因此只要做到这一点浮点数a = x * 9 /(float)y;因为得到一个十进制结果,右侧必须是双精度或浮点数。在你的情况下,使右侧小数,除以(浮点数)y – 2013-02-26 08:49:18