为什么用红色语言对这个简单的计算给出错误的答案

Why wrong answer for this simple calculation in Red language

我正在尝试打印简单表达式的正确值:(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.8 时,它们都给出 1.0 或简单的 1 值(我已经检查了多次!)。问题出在哪里?

编辑:输出:

>> (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
>> 

Debian 稳定版上的红色版本 0.6.3 Linux。

如果所有值都是整数并且最佳结果可能是浮点数,Red 不会像 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

你要多写一点,但是省了括号,不用考虑优先级