如何根据实数的小数部分递增计数器。

huangapple go评论79阅读模式
英文:

How to increment a counter according to the decimal part of a real number

问题

我想根据我们不知道其值的实数的小数部分(每次计算其值)来递增或递减一个计数器,该值必须在 [0,1] 范围内。

如果实数小数点后面有 1 位数字,计数器将递增 0.1,

例如:u = 0.5,然后 cpt = 0.5+0.1。

如果小数点后有 2 位数字,计数器将递增 0.01,

例如:u = 0.08,那么 cpt = 0.08+0.01。

它也可以以这种方式递减。
例如:

u = 0.5
if (instructions){
cpt = u + 0.1; //0.6
}
else
cpt = u - 0.1 //0.4

但是我们也可能有这种情况:

u = 0.1
if (instructions){
cpt = u + 0.1; //0.2
}
else
cpt = u - 0.01 //0.09

在这种情况下,我们递增了 0.1,但我们以 0.01 的方式递减,因为如果我们以 0.1 的方式递减,将会得到 u = 0。

英文:

I want to increment or decrement a counter according to the decimal part of a real number we don't know its value (we calculate its value each time)
this value must be in the range [0,1].

if the real number has 1 digit after the decimal point the counter will increment with 0.1,

Ex: u = 0.5 then cpt = 0.5+0.1.

if it has 2 digits after the decimal point the counter will increment with 0.01

Ex : u = 0.08 so cpt=0.08+0.01

it can also decrement in this way.
for exemple :

u = 0.5 
if (instructions){
cpt = u +0.1; //0.6
}
else 
cpt = u-0.1 //0.4

but we kan have this :

u= 0.1
if (instructions){
cpt = u +0.1; //0.2
}
else 
cpt = u-0.01 //0.09

in this case we increment with 0.1 but we decrement with 0.01 because if we decrement with 0.1 we will have u = 0

答案1

得分: 0

以下代码对我效果很好,我尝试了诸如 u = 0.5u = 0.580070 这样的值。得到的 delta 值,您可以选择加上或减去,以计算 cpt

var u = 0.5;
var exponent = BigDecimal.valueOf(u).scale();
var delta = Double.valueOf("1.0E-" + exponent).doubleValue();

我发现,使用字符串转换得到的结果比使用指数算术(如 Math.pow(0.1, exponent))更精确,后者会产生舍入误差。

英文:

The following lines work well for me, I tried values like u = 0.5 and u = 0.580070. The resulting delta you can either add or subtract to calculate cpt.

var u = 0.5;
var exponent = BigDecimal.valueOf(u).scale();
var delta = Double.valueOf("1.0E-" + exponent).doubleValue();

I found that the resulting value is more precise using String conversion than doing exponential arithmetics like Math.pow(0.1, exponent) where you get rounding errors.

huangapple
  • 本文由 发表于 2020年5月3日 17:35:30
  • 转载请务必保留本文链接:https://go.coder-hub.com/61572340.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定