Почему неправильный ответ для этого простого расчета на красном языке
Я пытаюсь вывести правильное значение простого выражения: (100 - 55) / (100 - 75), но всегда получаю 1,0 вместо 1,8. Я пытался:
>> (100 - 55) / (100 - 75)
>> ((100 - 55) / (100 - 75))
>> to-float ((100 - 55) / (100 - 75))
>> probe ((100 - 55) / (100 - 75))
>> print ((100 - 55) / (100 - 75))
>> (divide (subtract 100 55) (subtract 100 75))
Все они дают значение 1,0 или просто 1, когда правильные значения, очевидно, равны 1,8 (я проверял несколько раз!). В чем проблема?
Редактировать: вывод:
>> (100 - 55) / (100 - 75)
== 1
>> ((100 - 55) / (100 - 75))
== 1
>> to-float ((100 - 55) / (100 - 75))
== 1.0
>> probe ((100 - 55) / (100 - 75))
1
== 1
>> print ((100 - 55) / (100 - 75))
1
>> (divide (subtract 100 55) (subtract 100 75))
== 1
>>
Красная версия 0.6.3 на Debian Stable Linux.
1 ответ
Красный не выполняет автоматического преобразования из целого числа в число с плавающей точкой, как это делает Rebol, если все значения целые и наилучшим результатом может быть число с плавающей точкой.
Вы должны ввести значение с плавающей точкой в ваших вычислениях, как в
>> (100 - 55) / (100 - 75.0)
== 1.8
но, конечно, чем раньше, тем лучше.
>> (to-float 100) - 55 / (100 - 75)
== 1.8
Кстати, я люблю использовать
divide subtract to-float 100 55 subtract 100 75
Вы должны написать немного больше, но вы сохраняете скобки, и вам не нужно думать о приоритете