age*_*217 22 ruby math floating-point precision decimal
我有一个浮点数,我想截断到3个位置,但我不想舍入.
例如,转换1.0155555555555555为1.015(不1.016).
我将如何在Ruby中执行此操作?
Mar*_*ers 22
假设你有float,试试这个:
(x * 1000).floor / 1000.0
Run Code Online (Sandbox Code Playgroud)
结果:
1.015
Run Code Online (Sandbox Code Playgroud)
看到它在线工作:ideone
小智 22
您也可以转换为BigDecimal,并在其上调用truncate.
1.237.to_d.truncate(2).to_f # will return 1.23
Run Code Online (Sandbox Code Playgroud)
pot*_*hin 15
由于ruby 2.4 Float#truncate方法将可选参数作为一个小数位数:
1.0155555555555555.truncate(3)
# => 1.015
Run Code Online (Sandbox Code Playgroud)
乘以一千,一层,除以一千,确保做一个浮动分区.
(x * 1000).floor / 1000.0
Run Code Online (Sandbox Code Playgroud)
或者,在Ruby 1.9.2中,使用早期版本中未提供的回合版本,
(x - 0.0005).round(3)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
18675 次 |
| 最近记录: |