- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
我正在使用 ruby 的 Rational 库将图像的宽度和高度转换为纵横比。
我注意到字符串参数与数字参数的处理方式不同。
>> Rational('1.91','1')
=> (191/100)
>> Rational(1.91,1)
=> (8601875288277647/4503599627370496)
>> RUBY_VERSION
=> "2.1.5"
>> RUBY_ENGINE
=> "ruby"
仅供引用 1.91:1 是 Facebook 为其平台上的图片推荐的纵横比。
像 191 和 100 这样的值比 8601875288277647 和 4503599627370496 更方便地存储在我的数据库中。但是我想在决定使用哪种方法之前了解这种差异的来源。
The Rational test suite似乎没有涵盖这个确切的案例。
最佳答案
免责声明:这只是一个有根据的猜测,基于对如何实现这一壮举的一些了解。
正如 Kent Dahl 所说, float 并不精确,它们具有固定的精度,这意味着 1.91 实际上是 1.910000000000000000001 或类似的东西,ruby“知道”应该显示为 1.91。
另一方面,“1.91”是一个字符串,基本上是一个字符数组:'1'、'.'、'9'、'1'。
这就是说,这是你需要做的,从 float 中构建理性:
然而,第 1 步对于 Float 和 String 有点不同:
当应用第 3 步时,大数字可能会再次消失,这就是为什么在处理 float 的有理数时,您不会总是得到那些奇怪的结果。
TLDR:数字将根据参数为 String 或 FLoat 以不同方式构建。 FLoats 可以产生很长的数字,因为精度。
关于ruby - 为什么 Ruby 的 Rational 类将字符串参数与数字参数区别对待?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30515051/
我希望可以使用任何类型来代替通配符 (?)。 扩展是真的(正如我所料),但它是 super 编译错误(我不明白为什么它与扩展示例不同)。 我应该如何看待这种差异 - 这是一个错误还是一个功能? cla
我想知道是否有一种直接的方法(一行,无需创建函数)来转换 String至 Boolean在 Java 中,但在某种程度上 Boolean是null如果String是null . 如果我没看错,Bool
我是一名优秀的程序员,十分优秀!