我编写的程序应该在一个选定的数字系统中采用一个数字,然后在另一个选定的系统中将其转换为具有相同值的数字。它更大,但我给了您一个简单的版本,其中包含您要与之转换的已选择系统。
如果输入的数字不是正确的数字,应该给您一条错误消息(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>
答案 0 :(得分:2)
由于isNaN的实现方式,这是理想的行为,请参见文档:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_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>
答案 1 :(得分:1)
与@Lukasz所说的一样。解决此问题的另一种方法是使用+
将字符串强制转换为数字,假设您始终以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>