当a = x * 9 / y
和'x'
都是int时,我必须将等式'y'
的输出变为浮点数。例如x=64 y= 227
但是当输入到等式时,我得到2
而不是小数答案。
我如何编码:
int y = 227;
int x = 64;
Float a;
a = x * 9 / y;
答案 0 :(得分:2)
其中一个数字应为float类型,以便进行有效的转换:a = x * 9.0f / y;
答案 1 :(得分:1)
你需要使用类型转换来浮动:
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正在做什么?
使用这两种技术。首先通过Explicit Casting将x
转换为float,然后由于Implicit Casting而在float中进行计算。
实际上两个答案都比我的答案好。
答案 2 :(得分:1)
在大多数语言中,表达式为“float”的表达式中至少有一个元素将表示float类型的整个表达式:
a = x * 9.0 / y;
你也可以明确地施放一些标记(取决于语法语法):
a = (Float)x * 9 / y;
请注意,如果操作的优先级不同(即同一表达式中的+和*),您可能会密切关注要投射的内容。以下表达式可能会产生不同的结果(因为第一个表达式将x/9
作为整数,然后才将其转换为“float”):
a = x / 9 + (Float)y;
a = (Float)x / 9 + y;
答案 3 :(得分:0)
好的,当您使用整数设置任何数字时,要获得小数答案,右侧必须是浮点数或双精度数。就像这样
10/3 = 3
10 / 3.0 = 3.34
得到了吗?
在你的情况下,你可以做的是,
int y = 227;
int x = 64;
Float a = x * 9 / (float)y;
答案 4 :(得分:0)
一种简单的方法是将最终结果乘以1.0。这将为您转换它。