当和都是整数时,我必须将方程的输出a = x * 9 / y
变成浮点数。例如,但是当将其输入等式时,我得到的不是十进制答案。'x'
'y'
x=64 y= 227
2
我是如何编码的:
int y = 227;
int x = 64;
Float a;
a = x * 9 / y;
当和都是整数时,我必须将方程的输出a = x * 9 / y
变成浮点数。例如,但是当将其输入等式时,我得到的不是十进制答案。'x'
'y'
x=64 y= 227
2
我是如何编码的:
int y = 227;
int x = 64;
Float a;
a = x * 9 / y;
其中一个数字应该是 float 类型,以便有效转换:a = x * 9.0f / y;
在大多数语言中,在“float”类型的表达式中至少有一个元素将使整个浮点类型的表达式:
a = x * 9.0 / y;
您还可以显式转换一些成员(取决于语言语法):
a = (Float)x * 9 / y;
请注意,如果操作的优先级不同(即同一表达式中的 + 和 *),您可能会密切注意要转换的内容。以下表达式可能会产生不同的结果(因为第一个表达式将x/9
作为整数执行,然后才将其转换为“float”):
a = x / 9 + (Float)y;
a = (Float)x / 9 + y;
您需要类型转换才能浮动:
a = (float)x * (float)9 / (float)y;
不知道您使用的是什么语言,但我正在写C Language。
我所做的称为Explicit Casting。
数据类型的显式转换(给定转换)比自动转换具有更高的优先级。
Syntax:
(data_type) operand
其中操作数可以是变量或短语。
@yBee 回答了什么。
他正在使用隐式转换的概念,通过将 您的表达式 更改9
为 float 和 float 再次被 int 潜水给 float。 9.0f
(x * 9.0f)
要理解这一点,您需要了解自动类型转换:
隐式转换(自动转换)的工作方式是,长度较小的数据类型的变量(操作数)(比第二个变量的数据类型)(操作数),在内部转换为具有较长数字长度的数据类型的变量。听起来可能有些混淆,但这里有一个例子:
short int
->int
->unsigned int
->long int
->unsigned long int
->float
->double
->long double
@Alexei Levenkov 在做什么?
使用这两种技术。首先x
通过显式转换转换为浮点数,然后由于隐式转换在浮点数中进行计算。
实际上,这两个答案都比我的答案好。
一个简单的方法是将最终结果乘以 1.0。这将为您转换它。
好的,当您使用整数设备任何数字时,要获得十进制答案,右侧必须是浮点数或双精度数。就像这样
10/3 = 3
10/3.0 = 3.34
知道了 ?
在你的情况下,你可以做的是,
int y = 227;
int x = 64;
Float a = x * 9 / (float)y;