У меня есть санированная строка, которую я хочу оценить, используя ruby eval. Строка может содержать любую простую формулу арифметики, например '44/5 '.Ruby eval without round
Проблема в том, что результатом eval('44/5')
будет 8 (вместо 8.8).
Это происходит в процессе оценки (потому что 1.0*eval('44/5')
дает 8.0).
Я не нашел дополнительных параметров для eval для управления им.
Я даже пытался предписать или обернуть строку, чтобы преобразовать его в:
'0.0+44/5'
или
'1.0*(44/5)'
Но это еще не дает мне 8.8.
eval('44.0/5')
дает мне желаемый результат, но я не хочу вставлять что-либо внутри строки (я готов просто обернуть его, если необходимо).
Любая идея, как я могу решить проблему?
это блестящий +1 для знания, думайте, что это нужно добавить в документацию ruby. – bjhaid
@bjhaid Это в документах ;-) Я связан с ним. –
Документы не объясняют, что вы получаете объект Rational (тип объекта), его непростой для некоторых существ, нужно было просто проверить pry/irb, чтобы узнать, что это был рациональный объект. – bjhaid