【问题标题】:Check if value equals 0 regardless of decimal values?无论十进制值如何,检查值是否等于 0?
【发布时间】:2020-09-20 23:58:39
【问题描述】:

我正在平衡高斯核的 sigma。一旦数组的第一个索引等于0.(any decimal value),我希望打破while循环。

我发现,如果值还包含像 0.000013301 这样的任何小数,则简单地尝试匹配 0 将无法匹配。

var gaussianKernel1d = (function() {
    var sqr2pi = Math.sqrt(2 * Math.PI);

    return function gaussianKernel1d(size, sigma) {
        'use strict';

        // ensure size is even and prepare variables
        var width = (size / 2) | 0,
            kernel = new Array(width * 2 + 1),
            norm = 1.0 / (sqr2pi * sigma),
            coefficient = 2 * sigma * sigma,
            total = 0,
            x;

        // set values and increment total
        for (x = -width; x <= width; x++) {
            total += kernel[width + x] = norm * Math.exp((-x * x) / coefficient);
        }

        // divide by total to make sure the sum of all the values is equal to 1
        for (x = 0; x < kernel.length; x++) {
            kernel[x] /= total;
        }

        return kernel;
    };
})();

let i = 0.01;
let kernelArray = gaussianKernel1d(512, i);
while (kernelArray[0] === 0) {
    i = i + 0.01;
    kernelArray = gaussianKernel1d(512, i);

使用Array[0] !== 0.0)时也是如此

无论十进制值如何,如何匹配数据集中等于 0 的任何值?并且无需将数组转换为整数。

【问题讨论】:

标签: javascript node.js


【解决方案1】:

epascarello 的解决方案是正确的:

while (Math.floor(kernelArray[0]) === 0)

只要kernelArray[0]&gt;= 0&lt; 1 的值,它就会继续循环。

当然,另一种明显的方法就是将方程式写在上面的描述中:

while (kernelArray[0]) >= 0 && kernelArray[0] < 1)

【讨论】:

    【解决方案2】:

    尝试关注

    $b = 0;

    while ( (string) Array[0] !== (string) $b) { // code that just regenerates the random values }

    【讨论】:

    • 这甚至不是 JavaScript。
    • (字符串)指的是什么?
    • 这个是你不需要检查语法的解决方案
    • @srb633 (string) 冷藏箱类型转换该值
    • 当然,JavaScript 是松散类型的,它没有 强制转换,这是强类型语言特有的概念。 (它确实有 conversion,但你不会那样做......因此我的评论是这不是 JavaScript。)
    猜你喜欢
    • 1970-01-01
    • 2013-01-13
    • 2022-01-13
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    相关资源
    最近更新 更多