Javascript 检查值是否等于0,而不考虑十进制值?
我在平衡高斯核的sigma。我希望在数组的第一个索引等于Javascript 检查值是否等于0,而不考虑十进制值?,javascript,node.js,Javascript,Node.js,我在平衡高斯核的sigma。我希望在数组的第一个索引等于0(任何十进制值)时中断while循环 我发现,如果值还包含任何小数,如0.000013301,那么简单地尝试匹配0将不匹配 var gaussianKernel1d = (function() { var sqr2pi = Math.sqrt(2 * Math.PI); return function gaussianKernel1d(size, sigma) { 'use strict';
0(任何十进制值)
时中断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);
var gaussianKernel1d=(函数(){
var sqr2pi=Math.sqrt(2*Math.PI);
返回函数gaussianKernel1d(大小,西格玛){
"严格使用",;
//确保大小均匀,并准备变量
变量宽度=(大小/2)| 0,
内核=新数组(宽度*2+1),
标准=1.0/(sqr2pi*西格玛),
系数=2*sigma*sigma,
总计=0,
x;
//设置值和增量合计
对于(x=-width;x请尝试以下内容
$b=0
while((字符串)数组[0]!==(字符串)$b){
//仅重新生成随机值的代码
}
埃帕斯卡雷洛的解决方案是正确的:
while (Math.floor(kernelArray[0]) === 0)
只要kernelArray[0]
是=0
和<1
的值,它就会继续循环
当然,另一个明显的方法就是在上面的描述中写下等式:
while (kernelArray[0]) >= 0 && kernelArray[0] < 1)
while(kernelArray[0])>=0&&kernelArray[0]<1)
这甚至不是JavaScript。字符串指的是什么?这是一个不需要检查的解决方案syntax@srb633(string)引用该值的类型转换,当然,JavaScript是松散类型的,它没有类型转换,这是强类型语言特有的概念。(它确实有转换功能,但您不是这样做的……因此我的评论是,这不是JavaScript。)评论不用于扩展讨论;这段对话是。