为什么用红色语言对这个简单的计算给出错误的答案
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
你要多写一点,但是省了括号,不用考虑优先级
我正在尝试打印简单表达式的正确值:(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
你要多写一点,但是省了括号,不用考虑优先级