我正在尝试使用此脚本计算 EMA。但它没有给我正确的 EMA。这可能有很多原因,但我不确定是什么。我尝试了不同的 EMA 公式,但没有任何更好的结果,我真的不是专业的编码员,也不是数学家,因此我看不出我做错了什么。
随着时间的推移,EMA 值是如何计算的?对于第一个值,我使用 SMA 计算第一个 EMA,我想这应该可行 - 对吧?
我的 EMA 值= 0.033144798412698406
实际 EMA 值= 0.033084
Close = last closing price
Period = 20;
Multiplier = (2 / (period + 1));
function calculateEMA() {
if (EMA == 0) {
EMA = (Close - SMA) * multiplier + SMA;
calculateEMA();
} else {
for (a = 0; a < period; a++) {
EMA = (Close - previous_ema) * multiplier + previous_ema;
console.log(EMA + " ema"); …Run Code Online (Sandbox Code Playgroud) 按钮点击后我创建了功能:
var cena_poczatkowa = parseFloat($("#cena_aktualna").text());
var cena_dodana = cena_poczatkowa + 1.01;
$("span#cena_aktualna").text(cena_dodana);
Run Code Online (Sandbox Code Playgroud)
跨越html:
<span id="cena_aktualna">0.00</span>
Run Code Online (Sandbox Code Playgroud)
在每个点击数字之后,一切正常工作在范围内改变:1.01,1.02.但是在thrid点击后我看到3.0300000000000002.第四次点击后,我再次看到4.04.为什么在第三次点击后我看到这个奇怪的号码
这是我的工作脚本,所以你可以看到这个bug:http://jsfiddle.net/H3pfH/
可能重复:
JavaScript的数学是否被破坏?
当我减去6.4-1.6时,我在JS中得到答案为4.800000000000001,但我需要4.8而不使用toFixed(),toPrecision()和Math.round().任何的想法???
谢谢,
水晶
我正在尝试将数字修复为小数点后的 2 位数字,为此我正在使用toFixedjavascript 函数。以下是我得到的奇怪结果,请检查并帮助我。
无功编号 = 11.995; number.toFixed(2); //给我 11.99 这是正确的 无功编号 = 19.995; number.toFixed(2); //给我 20.00 这是不正确的
谁能告诉我为什么会这样。
谢谢你的帮助。
我在我的一个单元测试中遇到了一个奇怪的问题,我在JavaScript中得到了意想不到的舍入结果:
(2.005).toFixed(2)
// produces "2.00"
(2.00501).toFixed(2)
// produces "2.01"
Run Code Online (Sandbox Code Playgroud)
最初我怀疑这是一个Webkit唯一的问题,但它在Gecko中重复,这对我来说意味着它是ECMA-262或IEEE-754的预期副作用.我假设2.005的二进制表示是如此之少?或者,ECMA-262是否指定了循环到均衡的方法toFixed?
任何人都想要了解一下在幕后发生的事情只是为了让我安心吗?
更新:感谢您的评论.
我应该补充一点,让我有点紧张的事情之一是在Webkit dtoa.cpp中快速搜索中发现的评论,这似乎意味着有多种路径可以进行四舍五入,而开发人员并不确定它是如何工作的,包括相关的FIXME:
https://trac.webkit.org/browser/trunk/Source/WTF/wtf/dtoa.cpp#L1110
而且,并不是说它意味着很多,但是IE9按照我的预期对其进行了舍入,暗示它要么不是ECMA-262的一部分,要么就是它们有一个bug.
如果我想获取浮点数列表的乘积,那么最坏情况/平均情况下的精度损失是通过添加它们的日志然后获取总和而不是仅仅乘以它们来实现的.有没有这种情况实际上更准确?
Number()函数在某些参数上返回不正确的值,如下所示:
Number('10000000712224641') returns 10000000712224640
Number('10000000544563531') returns 10000000544563532
Run Code Online (Sandbox Code Playgroud)
我在Firefox,Chome,IE和Node.js上测试了这个.为什么会这样?
我发现一个很奇怪的问题,问题是PHP和Javascript中的ROUND方法的计算结果不一样!?
请参见以下示例:
的PHP
echo round(175.5); // 176
echo round(-175.5); // -176
Run Code Online (Sandbox Code Playgroud)
Java脚本
console.log(Math.round(175.5)); // 176
console.log(Math.round(-175.5)); // -175 <-why not -176!!??
Run Code Online (Sandbox Code Playgroud)
有人知道为什么吗?以及如何使Javascript和PHP具有相同的结果?
0.1 + 0.2
// => 0.30000000000000004
0.2 + 0.2
// => 0.4
0.3 + 0.2
// => 0.5
Run Code Online (Sandbox Code Playgroud)
我知道这与浮点有关,但这里到底发生了什么?
根据@Eric Postpischil 的评论,这不是重复的:
那只涉及为什么“噪音”出现在一个附加项中。这个人问为什么“噪音”出现在一个加法中而没有出现在另一个加法中。这在另一个问题中没有回答。因此,这不是重复的。事实上,差异的原因并不是浮点运算本身,而是ECMAScript 2017 7.1.12.1 step 5
如何将数字(金钱)分成x数字,数字可以是一个或两个小数或没有它
比如1000或100.2或112.34
我希望能够以这个数字都一样分成X部分人,但是,如果它不是奇数额外数到最后一个.
例如
3856 / 3
1285.33
1285.33
1285.34
Run Code Online (Sandbox Code Playgroud)