我编写的程序应该是在选定的数字系统中获取一个数字,并将其转换为其他选定系统中相同值的数字。它要大得多,但我给了您一个简单的版本,您已经选择了要转换的系统。
如果输入的数字不是正确的数字,则应该向您提供错误消息(Please enter a proper ${fromSystem[1]} number
)。但是,如果一个数字以数字开头,然后包含字母,它就会认为它是一个数字。忽略数字后的所有内容(例如:对于25ad3,它将转换25,忽略它之后的所有内容)。您可以测试它(此代码具有此功能)。
有人知道怎么解决这个问题吗?
编辑:我刚刚添加了更多的细节
fromSystem = [10, "decimal"]; // Decimal
toSystem = [2, "binary"]; // Binary
$("#convert").click(function() {
var result;
var inputValue = $("#inputBox").val();
if (fromSystem === toSystem) {
result = inputValue;
} else {
result = parseInt(inputValue, fromSystem[0]).toString(toSystem[0]);
}
if (isNaN(result) === true) {
result = `Please enter a proper ${fromSystem[1]} number`;
} else {
result = result.toUpperCase();
}
$("#resultPara").html(result);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="converterArea">
<input id="inputBox" type="text" placeholder="">
<button id="convert" type="button">Convert</button>
<p id="resultPara"></p>
</div>
发布于 2018-11-07 18:58:16
由于isNaN的实现方式,这是所需的行为,请参阅docs:Objects/isNaN#Description
我将首先测试它是否只包含使用regexp的数字,如下所示:
fromSystem = [10, "decimal"]; // Decimal
toSystem = [2, "binary"]; // Binary
$("#convert").click(function() {
var result;
var inputValue = $("#inputBox").val();
if (fromSystem === toSystem) {
result = inputValue;
} else {
result = parseInt(inputValue, fromSystem[0]).toString(toSystem[0]);
}
if (inputValue.match(/[^0-9]/g)) {
result = `Please enter a proper ${fromSystem[1]} number`;
} else {
result = result.toUpperCase();
}
$("#resultPara").html(result);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="converterArea">
<input id="inputBox" type="text" placeholder="">
<button id="convert" type="button">Convert</button>
<p id="resultPara"></p>
</div>
发布于 2018-11-07 19:02:36
和卢卡兹说的一样。另一种解决方法是使用+
将字符串转换为数字,假设您总是在基数10中引入一个数字。
fromSystem = [10, "decimal"]; // Decimal
toSystem = [2, "binary"]; // Binary
$("#convert").click(function() {
var result;
var inputValue = $("#inputBox").val();
if (fromSystem === toSystem) {
result = inputValue;
} else {
result = (+inputValue).toString(toSystem[0]);
}
if (isNaN(result) === true) {
result = `Please enter a proper decimal number`;
} else {
result = result.toUpperCase();
}
$("#resultPara").html(result);
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="converterArea">
<input id="inputBox" type="text" placeholder="">
<button id="convert" type="button">Convert</button>
<p id="resultPara"></p>
</div>
https://stackoverflow.com/questions/53195938
复制相似问题