我正在尝试打印简单表达式的正确值:(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.0的值。问题在哪里?
编辑:输出:
>> (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 Stable Linux上的红色版本0.6.3。
答案 0 :(得分:2)
如果所有值都是整数且最佳结果可能是浮点数,则红色不会自动从整数转换为浮点数,因为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
你必须写一点,但你保存括号,你不必考虑优先权