Как сделать, чтобы деление 2-х целых производило float вместо другого int?

Скажите, если вы хотите получить из таблицы только attr1 и attr2, используя pets-index, где ключ разделения pet_type равен cats, это должно работать:

response = table.query(
    IndexName='pets-index',
    KeyConditionExpression='pet_type = :value',
    ExpressionAttributeValues={
        ':value': {'S': 'cats'}
    },
    ProjectionExpression='attr1,attr2'
)
138
задан Ciro Santilli 新疆改造中心法轮功六四事件 15 February 2016 в 14:58
поделиться

5 ответов

Just cast one of the two operands to a float first.

v = (float)s / t;

The cast has higher precedence than the division, so happens before the division.

The other operand will be effectively automatically cast to a float by the compiler because the rules say that if either operand is of floating point type then the operation will be a floating point operation, even if the other operand is integral. Java Language Specification, §4.2.4 and §15.17

285
ответ дан 23 November 2019 в 23:27
поделиться

Приведите одно из целых чисел в число с плавающей точкой, чтобы заставить операцию выполняться с помощью математики с плавающей запятой. В противном случае целочисленная математика всегда предпочтительнее. Итак:

v = (float)s / t;
3
ответ дан 23 November 2019 в 23:27
поделиться

Попробуйте:

v = (float)s / (float)t;

Приведение целых чисел к плавающим допускает деление с плавающей запятой.

Тем не менее, вам действительно нужно разыграть только одно.

11
ответ дан 23 November 2019 в 23:27
поделиться

Вы можете разыграть хотя бы одного из них, но для согласованности вы можете явно разыграть оба, поэтому что-то вроде v = (float) s / (float) t должно работать ,

3
ответ дан 23 November 2019 в 23:27
поделиться

You can cast the numerator or the denominator to float...

int operations usually return int, so you have to change one of the operanding numbers.

2
ответ дан 23 November 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: