在javascript中反转十进制数字
Reverse decimal digits in javascript
如何使用位反转数字的位数
输入:
x = 123;
输出:
x = 321;
如何做到这一点?
这不是反转位;这是颠倒十进制数字的顺序,这是完全不同的。有一种方法:
var x = 123;
var y = 0;
for(; x; x = Math.floor(x / 10)) {
y *= 10;
y += x % 10;
}
x = y;
如果你真的想反转比特,那就是:
x = ~x;
作为一个函数:
function reverse(n) {
for(var r = 0; n; n = Math.floor(n / 10)) {
r *= 10;
r += n % 10;
}
return r;
}
如果你想做一个简单的反转:
var x = 123;
var y = x.toString();
var z = y.split("").reverse().join("");
var aa = Number(z);
document.write(aa);
http://jsfiddle.net/jasongennaro/gV39e/
这里有另一种方法。。。
var reversed = num.toString().split('').reverse().join('');
jsFiddle。
如果您希望它再次作为Number
,请使用parseInt(reversed, 10)
。但请记住,前导0
在十进制数中并不重要,如果转换为Number
,则会丢失它们。
你也可以使用这个功能
function myfunction(a){
var x=a.toString();
var y= x.split("");
var z=y.reverse();
var result=z.join("");
return result;
}myfunction(123);
简单快捷的解决方案:假设您想要反转一个数字4546。您将从每次除以10得到提醒,并将其附加到结果中,直到数字>0。同时通过将num变量除以10来更新num变量。
var x = '';
var num = 4546;
while(num>0){
x = x + (num%10);
num = parseInt(num/10);
}
console.log(x);
反转正/负整数
function reverseInt(n) {
return parseInt(n.toString().split('').reverse().join()) * Math.sign(n)
}
如果n是-5,那么Math.sign(n)==>将返回-1
如果n为5,则Math.sign(n)==>将返回1
以下是JavaScript中处理整数或字符串的可逆数组函数:
function reverse(array)
{
var left = null;
var right = null;
var length = array.length;
for (left = 0, right = length - 1; left < right; left += 1, right -= 1)
{
var temporary = array[left];
array[left] = array[right];
array[right] = temporary;
}
return array;
}
function toDigitsArrayFromInteger(integer, isReverse)
{
var digits = [];
if (integer > 0)
{
var floor = window.Math.floor;
while (integer > 0)
{
digits.push(floor(integer % 10));
integer = floor(integer / 10);
}
// Array is populated in reverse order. Un-reverse it to make it normal.
if (!isReverse)
{
digits = reverse(digits);
}
}
else if (integer < 0)
{
digits = toDigitsArrayFromInteger(-integer, isReverse);
}
else if (integer === 0)
{
digits.push(0);
}
return digits;
}
function toDigitsArrayFromString(string, isReverse)
{
var digits = [];
string += ""; // Coerce to string.
var i = null;
var length = string.length;
for (i = 0; i < length; i += 1)
{
var integer = parseInt(string.charAt(i), 10);
if (isFinite(integer))
{
digits.push(integer);
}
}
if (isReverse)
{
digits = reverse(digits);
}
return digits;
}
一旦你把数字作为一个数组,你就可以很容易地反转数组,得到从左或从右开始的数字。
字符串函数更通用,因为它可以找到字符串中的任何数字,而整数函数仅限于整数。
基准:http://jsperf.com/todigitsarray
两个函数之间的基准测试表明,在Firefox 10和Chrome 12中,字符串函数比整数函数快30%到60%。在Opera 12中,整数函数稍微快了大约10%。
//reverse integer
const revInt = (num)=>{
//turn into string
if(Math.sign(num)===1)
return parseInt(num.toString().split('').reverse().join(''));
else return -1*parseInt(num.toString().split('').reverse().join(''));
}
console.log(revInt(-501));
<html>
<script>
function reverseInt(n){
var r=0;
while(n!=0){
r*=10;
r+=n%10;
n=Math.floor(n/10);
}
return r;
}
</script>
</html>
尝试这个
var n = 352;
function loop(n, r){
if(!n) return r;
r = (r ? r * 10 : 0) + n % 10;
return loop(Math.floor( n / 10), r);
}
console.log(loop(n));
好吧,在一行函数中使用并链接JavaScript中的这些流行技巧如何。。。
const reverseNum = num => +("" + ~~num.split("").reverse().join(""));
这样称呼它:
reverseNum(123); //321
reverseNum(423.09); //324
reverseNum(23305.1); //50332
reverseNum(89112); //21198
reverseNum(568434.2389); //434865
这将Number
x作为一个参数,并返回相反的数字。
const reverse = (x) => Number(x.toString().split("").reverse().join(""));
内存使用率:35.3 MB,不到leetcode.com上反向整数JavaScript在线提交的100.00%。运行时间:80毫秒,比反向整数的61.48%的JavaScript在线提交快。
时间复杂度为O(log10(n))
。
function reverse(x) {
let rev = 0;
const isNegative = Math.sign(x) === -1;
const isOverflow = n => n > 2**31;
x = Math.abs(x);
while (x) {
let pop = x % 10;
x = Math.floor(x / 10);
rev = rev * 10 + pop;
if (isOverflow(rev)) {
return 0;
}
}
return isNegative ? rev * -1 : rev;
}
下面的代码块应该可以完成
<script type = "text/javascript">
var input;
input=window.prompt ("Please enter a number to be reversed.");
x=input.length;
while(x > 0)
{
x=x-1;
document.write(input[x]);
}
</script>
- 我想在AngularJS应用程序中创建一个输入数字框,用户不应该在该框上键入十进制数字.(一个整数输入框)
- 在javascript中接受十进制数字的Regex
- 如何在TextBox中只允许使用十进制数字
- 如何删除“"使用jQuery从十进制数字中提取
- 只允许整数和十进制数字textbow jquery(不带正则表达式)
- 十进制数字的 Javascript 正则表达式 - 替换非数字和多个小数点
- 使用 toFixed 对十进制数字进行舍入
- 如何使用 JavaScript 删除十进制数字
- 如何防止 toFixed 四舍五入十进制数字
- 我如何修改这个JavaScript正则表达式来检查字符串是否是一个最多必须有2个十进制数字的数字
- JavaScript中的Regex,用于验证十进制数字
- 如何在d3 radialProgress中显示十进制数字
- 如何让我的javascript计算器计算十进制数字
- AngularJs格式化极小的十进制数字(1e-8)
- 带gettersetter的角度1.4.x数字字段不适用于十进制数字
- 十进制数字的正则表达式
- 动画十进制数字
- Intl.使用数字选项的排序器和自然排序不正确地对十进制数字进行排序
- 在按下键时验证只有十进制数字的数字
- 谁能解释这个过程与转换十进制数字二进制