1

当和都是整数时,我必须将方程的输出a = x * 9 / y变成浮点数。例如,但是当将其输入等式时,我得到的不是十进制答案。'x''y'x=64 y= 2272

我是如何编码的:

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

5 回答 5

2

其中一个数字应该是 float 类型,以便有效转换:a = x * 9.0f / y;

于 2013-02-26T08:06:18.923 回答
1

在大多数语言中,在“float”类型的表达式中至少有一个元素将使整个浮点类型的表达式:

  a = x * 9.0 / y;

您还可以显式转换一些成员(取决于语言语法):

 a = (Float)x * 9 / y;

请注意,如果操作的优先级不同(即同一表达式中的 + 和 *),您可能会密切注意要转换的内容。以下表达式可能会产生不同的结果(因为第一个表达式将x/9作为整数执行,然后才将其转换为“float”):

 a = x / 9 + (Float)y;
 a = (Float)x / 9 + y; 
于 2013-02-26T08:09:58.710 回答
1

您需要类型转换才能浮动:

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通过显式转换转换为浮点数,然后由于隐式转换在浮点数中进行计算。

实际上,这两个答案都比我的答案好。

于 2013-02-26T08:06:04.087 回答
0

一个简单的方法是将最终结果乘以 1.0。这将为您转换它。

于 2013-04-01T19:33:07.977 回答
0

好的,当您使用整数设备任何数字时,要获得十进制答案,右侧必须是浮点数或双精度数。就像这样

10/3 = 3

10/3.0 = 3.34

知道了 ?

在你的情况下,你可以做的是,

int y = 227; 
int x = 64;
Float a = x * 9 / (float)y;
于 2013-02-26T08:40:57.930 回答