ruby noob,刚刚安装了rubymotion,创建了我的第一个程序,我很难让time(示例)应用程序正常工作。
每当我尝试使用sprint或其他格式格式化字符串(抱歉,不知道名称)时,我只会得到我的格式字符串。
即(当我的应用程序在模拟器中运行时从控制台)
Build ./build/iPhoneSimulator-5.1-Development
Simulate ./build/iPhoneSimulator-5.1-Development/Timer.app
(main)>> @time = 0.1
=> 0.0999999940395355
(main)>> string = sprintf("%.1f", @time)
=> "%.1f"
(main)>> string
=> "%.1f"
(main)>> "%.1f" % @time
=> "%.1f"
(main)>>
在模拟器中的实际应用程序中得到相同的结果。
我的Mac电脑上确实安装了默认的Ruby,但是如果我尝试运行一个测试Ruby文件(打印代码为%05d%123),我会得到预期的结果。
/usr/bin/ruby -v
ruby 1.8.7 (2010-01-10 patchlevel 249) [universal-darwin11.0]
/Library/RubyMotion/bin/ruby -v
MacRuby 0.12 (ruby 1.9.2) [universal-darwin11.0, i386]
运行狮子10.7.3,任何建议或想法赞赏。
谢谢。
最佳答案
截至2012年5月9日,此问题已得到解决。确保您使用的是rubymotion 1.3(runsudo motion update
),并且字符串格式将再次工作。
2012年5月8日更新:Confirmed bug,应在今晚或明天修复。
根据我上面的评论,这肯定是个错误。一个丑陋的黑客让这个工作可能是这样的(因为%d
仍然可以工作sprintf
):
@time = 0.1
sprintf("%d", (@time * 10).round).insert(-2, '.')