du1108 2014-03-12 10:33
浏览 17
已采纳

如何从浮点数获得模数

I have:

$value = 0.57;
$step = 0.01;

I want to check if $value/$step is integer. Additionally sometimes $value is negative.

What I get is:

$value/$step -> 57
is_int($value/$step) -> false
and the best one:
floor($value/$step) -> 56 (I assume that 57 is really 56.9999999(9) )
$a - $b * floor($a / $b) -> 0.0099999(9)
($value/$step)%1 -> 0 (ok, but % doesn't work if it is really a float)
fmod($value/$step) -> 0.999999999(9)

any idea?

  • 写回答

3条回答 默认 最新

  • doujizhong8352 2014-03-14 16:33
    关注

    other possibility: float as string modulo :-)

    function float_modulo($value, $step) {
        $str_value = strval($value);
        $float_part_value = substr($str_value, strpos($str_value, ".") + 1);
        $str_step = strval($step);
        $float_part_step = substr($str_step, strpos($str_step, ".") + 1);    
        return intval($float_part_value) % intval($float_part_step);
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 这个主板怎么能扩出一两个sata口
  • ¥15 不是,这到底错哪儿了😭
  • ¥15 2020长安杯与连接网探
  • ¥15 关于#matlab#的问题:在模糊控制器中选出线路信息,在simulink中根据线路信息生成速度时间目标曲线(初速度为20m/s,15秒后减为0的速度时间图像)我想问线路信息是什么
  • ¥15 banner广告展示设置多少时间不怎么会消耗用户价值
  • ¥16 mybatis的代理对象无法通过@Autowired装填
  • ¥15 可见光定位matlab仿真
  • ¥15 arduino 四自由度机械臂
  • ¥15 wordpress 产品图片 GIF 没法显示
  • ¥15 求三国群英传pl国战时间的修改方法