【发布时间】:2016-03-31 18:43:15
【问题描述】:
上下文
我有一个 sn-p 代码,它允许用户单击“变量(任意)元素”,提示输入数字,并查看在他们单击的元素中/上生成的该数字的处理版本,基于“变量函数”。我将在下面提供更详尽的描述和原始代码。跳到底部的问题。
详尽的描述
我有一个看起来像square(root) { return root * root; } 的函数。显然,它需要一个数字并返回该数字乘以自身。我还有一个这样的printNum(input) { return input; } - 希望不需要解释。
浏览器使用一个针对var element = document.getElementById("unique-key") 的事件监听器调用它们,看起来像element.addEventListener('click', promptFunction);。
promptFunction 使用var functionPlug =[functionsListedAbove]; 将输入从window.prompt('inputvar') 指向element.innerHTML
原码
//where to write
var element = document.getElementById("module");
//what to write
var functionPlug = printNum;
//how to write
function square(root) { return root * root; }
function printNum(input) { return input * input / input; }
//write
function promptFunction() { element.innerHTML = functionPlug(window.prompt('inputvar')); }
//When to write
element.addEventListener('click', promptFunction);
//promptFunction(); --immediately
body {
background-color: #3A3C3D; /*alt color #CCA #3A3C3D*/
margin: 0;
overflow: hidden; /*top stop the extended shadow element height from causing the page to scroll*/
}
.backDrop {
background-color: #FFF; /*alt colors #ACA null #CCA*/
margin: auto;
height: 100vh; width: 720px;
}
.backDrop:before {
box-shadow: 0 0 20px black;
content:'';
position: absolute;
height: 200vh; width: 720px;
margin: auto;
z-index: -1;
}
.lineBreak {
height: 16px;
}
.module {
border-left: 2px dotted red;
border-radius: 5px;
box-shadow: 0 0 5px -2px rgba(0,0,0,.4);
margin: auto;
height: 270px; width: 480px;
}
<body><!--All the comments you'll see below are meant to null 'white space' between layout elements--><!--
--><div class="backDrop" id="backDrop"><!--
--><div class="lineBreak"></div><!--
--><div class="module" id="module"></div>
</div>
现在回答我的问题
似乎我的 square 函数运行良好,但 printNum 有一些非常奇怪的行为,我需要向我解释一下。
输入范围从 9 到 9999999 会产生您期望的数字。
输入 99999999 产生 99999998.99999999
输入 999999999 到 9999999999 会产生您期望的数字。
输入 999999999999 产生 99999999999.00002
输入 9999999999999 到 999999999999999 会产生您期望的数字
最后 9999999999999999 产生 10000000000000000
我想我理解最后一个,因为它是 16 位数字,但我仍然想跳出猜测的领域。
还有其他数字会产生奇怪的结果吗?他们是什么,他们为什么这样做?还有如何避免 e 符号?
【问题讨论】:
-
你的数字听起来不对,任何介于 2^53 -1 和它的负数之间的整数都应该被认为是安全整数,也就是说它们不使用浮点数。见developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/…。 isSafeInteger 返回什么?
-
你应该展示一个你正在调用的简单示例,你有太多与问题无关的代码
标签: javascript string types integer