我想比较两个浮点数并返回true
,如果它们的整个部分(小数点左边)相等而且它们的分数(十进制数)都是> = .5或< = .5。
我这样做的方法是将浮点数转换为字符串,并通过在'.'
上分隔并在if
语句中进行两次比较来标记每个浮点数的两个部分(整数/分数)。
答案 0 :(得分:1)
您无需转换为字符串:
def compare_two_floats(float1, float2)
if float1.truncate == float2.truncate #checks if left side is equal. Goes to else block and returns false if not.
float1 -= float1.truncate #now subtracts the "whole number" portion
float2 -= float2.truncate
if (float1 < 0.5) && (float2 < 0.5)
return true
elsif (float1 >= 0.5) && (float2 >= 0.5)
return true
else
return false
end
else
return false
end
end
puts compare_two_floats(1.3,1.7)
puts compare_two_floats(2.3,1.7)
puts compare_two_floats(1.3,1.3)
puts compare_two_floats(1.3,3.3)
这很有效,对我有用。首先,使用Ruby为Float类提供的#truncate方法检查左侧。
如果左侧相等,它将继续评估小数。如果不是,则返回false并退出方法。
如果左侧相等,则方法继续减去每个浮点的截断(或左侧),使其小于1.
然后比较以查看它们是否小于0.5或大于或等于0.5。
相应地返回true / false。
答案 1 :(得分:0)
如果您可以更改您的问题,那么:
然后,
float1.round == float2.round