Java 保持双人间的最大值为1.0
好的,这应该是一个相当简单的问题,但我只是不能得到这个权利。我有一个累积的总数,返回一个双倍。这些表示百分比,并且它永远不应为0.0。。所以我想用d%1来控制1。2.13变为0.13,或2.98变为0.98,但3.0变为0.0,而不是1.0(100%) 我显然在做一些根本错误的事情?或者我只是作弊说如果0那么1Java 保持双人间的最大值为1.0,java,math,modulus,Java,Math,Modulus,好的,这应该是一个相当简单的问题,但我只是不能得到这个权利。我有一个累积的总数,返回一个双倍。这些表示百分比,并且它永远不应为0.0。。所以我想用d%1来控制1。2.13变为0.13,或2.98变为0.98,但3.0变为0.0,而不是1.0(100%) 我显然在做一些根本错误的事情?或者我只是作弊说如果0那么1 谢谢%是模运算符 来自维基百科: 在计算中,模运算在一个数除以另一个数(有时称为模)后找到余数 换言之,3模1=0,因为3除以1后的余数为零。模的行为与预期一样-3.0除以1.0时没有余
谢谢%是模运算符 来自维基百科: 在计算中,模运算在一个数除以另一个数(有时称为模)后找到余数
换言之,3模1=0,因为3除以1后的余数为零。模的行为与预期一样-3.0除以1.0时没有余数 如果要处理无余数的特殊情况:
d %= 1.0
d = d == 0.0 ? 1.0 : d;
- 为什么要将其设置为
sum=sum%1
- 如果含义是某个操作的百分比,那么它不应该仍然是
1.0
- 因此,在求和时,我会这样做:
for (...) { // some stuff of yours sum+=...; if (sum>1.0) sum=1.0; }
- 但那个操作对我来说毫无意义(除了脉冲进度条)
- 除非这笔钱是用来做别的,我想
for (...) { // some stuff of yours sum+=...; if (sum>1.0) sum-=floor(sum); }
- 如果总和可以为负值,则使用
ceil
- 如果不需要
,则忽略1.0
,并始终低于下限(总和)if
- 如果总和表示进度状态
- 您知道最后一个值(整和)
- 然后
百分比=总和/整和)代码>
关于
x/(x+a)
或1-exp(-ax)
?2.0给了你什么?我不完全明白你在做什么。一般来说,在Java中进行数学运算时使用BigDecimal。2%1=0。。这是一个连续的小数列表,但每次它碰到一个整数,我希望它的结果是1,所以1,2,3,…,n=1,1,1,1。或者1.1、2.1、…、n.1=0.1、0.1等您想要的0%1
=>1
?您的问题缺乏明确的说明:为什么接受一个非单调的函数?(如f(1.98)>f(2.13)
)。在我看来,这根本是错误的。@YvesDaoust,如果目标总和只是大致已知的话,那就非常好:)没有想到(+1)