【问题标题】:Rounding up to the nearest .49 or .99四舍五入到最接近的 0.49 或 0.99
【发布时间】:2018-03-09 10:52:43
【问题描述】:

我想纠正 SQL 查询以四舍五入到最接近的 .49 或 .99

我目前使用 FLOOR 或 TRUNCATE 函数将其写入到 0.99 没有问题

UPDATE wp_postmeta 
SET meta_value=meta_value*1.39
WHERE meta_key='_saleprice' OR meta_key='_price';
UPDATE wp_postmeta
SET meta_value = FLOOR(meta_value) + 0.99
WHERE meta_key='_price' OR meta_key='_saleprice’;

首先将价格乘以 1.39 然后 FLOORS 这个(在小数点四舍五入到最接近的整数后删除)然后将 0.99 添加到末尾......总共有效地四舍五入到最接近的 0.99

PRICE AFTER *1.39          PRICE AFTER ROUNDING
10.00                                                10.99
10.49                                                10.99
10.50                                                10.99
10.99                                                10.99
11.00                                                11.99
11.49                                                11.99
11.50                                                11.99
11.99                                                11.99

我想要达到的是

PRICE AFTER *1.39          PRICE AFTER ROUNDING
10.00                                                10.49
10.49                                                10.49
10.50                                                10.99
10.99                                                10.99
11.00                                                11.49
11.49                                                11.49
11.50                                                11.99
11.99                                                11.99

我如何才能最好地实现这一目标?期待一些建议

谢谢

亨利

【问题讨论】:

  • * 2.0,向上取整,除以 2,减去 0.01
  • @jarlh close,非常简单的数学解决方案。这适用于除 0.00 值之外的所有值,该值最终低于原始值 0.99。例如,10.00 变为 9.99。
  • 我好尴尬……
  • *2呢,加1,向下取整,除以2,减去0.01
  • * 2.0,截断,除以 2,加 0.49?

标签: mysql sql database


【解决方案1】:

以下应该可以解决问题:

* 2.0, trunc down, divide by 2, add 0.49

【讨论】:

    【解决方案2】:

    以下似乎有效:

    select ceil(meta_value * 2 + 0.001)/2 - 0.01
    

    这有点棘手,因为 10.50 应该是 10.99,而不是 10.49。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-01-29
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多