【问题标题】:How can I convert a random number to a multiple of another number?如何将随机数转换为另一个数的倍数?
【发布时间】:2021-11-04 16:33:19
【问题描述】:

所以我正在开发这个应用程序,我需要将随机数转换为其他数字的倍数。假设我有一个数字0.00486585,它必须是0.00010000 的倍数。随机数可以是任何东西,从整数到浮点数,但它们会有自己的增量值。

增量值可能是 1、0.1、0.01、0.001 等。下面是增量值的说明: The increment of the order size. The value shall be a positive multiple of the baseIncrement.

我知道我可以在模数的帮助下检查一个数字是否是另一个数字的倍数,但这有点不同,因为我需要一个通用公式,它可以处理任何随机数或任何增量值来转换数为倍数。

请注意,生成的数字应尽可能接近原始数字,并且不应超过原始数字。

非常感谢您的帮助。

【问题讨论】:

  • 到目前为止你做了什么?你能分享你的代码吗?
  • 那么0.00486585的答案是什么?
  • 嗯,我的意思是转换一个数字,以便当它可以被增量值整除时,它应该返回零。但要确保转换后的数字最接近原始数字。
  • @ElsonRamos 对不起,我什么都没试过,因为我在这里一无所知。
  • Math.floor(0.00486585 / 0.0001) * 0.0001 or round or ceil ?

标签: javascript math numbers


【解决方案1】:

考虑

x = 0.21321
y = 0.01
x-(x%y)

这应该为您提供可整除的数字。但是,这里有一个问题,因为 JS 中的四舍五入错误

x%y 为 0.0032100000000000063

为避免这种情况,您可以使用四舍五入

(x-(x%y).toFixed(5))

toFixed(5) 仅供参考。您应该根据要求更改小数

【讨论】:

    猜你喜欢
    • 2013-10-09
    • 2022-06-17
    • 2014-07-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多