查找一个数中有多少千、百、十位数字。

9
我有一个asp应用程序,其中有一个金额列。我需要找出该金额中有多少千、百和十。
例如,如果我的金额为3660,那么 1000的位数-3 100的位数-6 10的位数-6
我需要得到这样的结果。
有人能帮帮我吗?
8个回答

15

简单的方法是将这个数字除以1000,商就是这个数字中有多少个千。然后用余数除以100,商就是这个数字中有多少个百。最后再用余数除以10,商就是这个数字中有多少个十。

像这样:

quotient = 3660 / 1000;     //This will give you 3
remainder = 3660 % 1000;    //This will give you 660

然后,

quotient1 = remainder/ 100;     //This will give you 6
remainder1 = remainder % 100;    //This will give you 60

最后

quotient2 = remainder1 / 10;     //This will give you 6 

1
你可以在Asp和Javascript中实现上述想法! :) - Rahul Tripathi
谢谢,我刚刚通过上述想法在SQL中实现了这个结果。 - Suhail

6

使用类型转换并将数据类型更改为字符串不是更容易吗?

然后,您可以通过检查所选索引位置的值来轻松检查该值。

var number = 1234;
number2 = new String(number);
var thousands = number2[0];
var hundreds = number2[1];

可能对你所做的事情没有用,但对我有用 :)


不错的第一次回答!也许你应该使用parseInt()将结果转换为数字,以便在计算中使用? - Joe Iddon

2
如果“javascript”标签是正确的,那么你已经得到了一些答案。如果“asp-classic”标签实际上是正确的,则很有可能你的脚本语言是VBScript,而不是Javascript。
你只是选择了10的倍数作为例子,还是真的在寻找这个实际的倍数?因为如果是后者,那么你只需要将数字拆分成数字位 - 这就是十进制数系统的意义所在。
Function SplitNum(theNum)
   dim L, i, s, n
   n = CStr(theNum)
   L = Len(n)
   s = ""
   for i = 1 to 3
      if s <> "" then s = "," & s
      if i >= L then
        s = "0" & s
      else
        s = Left(Right(n,i+1),1) & s
      end if
   next
   if L > 4 then s = left(n,L-4) & s
   SplitNum = s
End Function

如果你的实际除数不是10的倍数,你需要进行算术运算。VBScript中的整数除法运算符是\。(整数除法基本上是模数函数的“相反”操作。)

Function GetMultiples(theNum)
   dim q, r
   q = theNum \ 1000 & ","
   r = theNum Mod 1000
   q = q & r \ 100 & ","
   r = r Mod 100
   q = q & r \ 10
   GetMultiples = q
End Function

谢谢您的想法...很不错。 - Suhail

1

假设我们有数字7354。要找到它的千位数:

variable a = 7354 / 1000
variable b = a % 10

现在存储在变量b中的数是千位数。为了找到百位数:

variable c = 7354 / 100
variable d = a % 10

现在存储在变量d中的数字是百位数。 要找到十位数:

variable e = 7354 / 10
variable f = a % 10

现在存储在变量f中的数字是十位数。 要找到个位数:

7354 % 10

这适用于7354的每个数字,甚至适用于比7354更大的数字。


0

2021 版本在此:

将您的数字转换为字符串,展开它并像下面这样反转它:

x = 1234
x = [...x.toString()].reverse() // [4, 3, 2, 1]
thous = x[3] // 1
hunds = x[2] // 2
tens  = x[1] // 3
units = x[0] // 4

y = [...x.toString()].reverse()[3] // 1 because 1000 has 3 zeros

我想你可以使用一些复杂的10次幂系统来获取这些索引。因此,让我们正是这样做,并将@Villarrealized 2013年的15行代码压缩成2021年的几行代码:

function placeValues(someNumber = 1234) {
  x = [...someNumber.toString()].reverse().reduce((p, c, i) => {
    p[10**i] = c;
    return p;
  }, {});
  return x; // {1000:1, 100:2, 10:3, 1:4}
}

0

试试这个...

这里有一个演示如何使用输出的小工具.. http://jsfiddle.net/Villarrealized/L3AxZ/1/

function getMultiplesOfTen(number){
   number = parseInt(number);
   if(typeof(number)!=="number") return number;
    var result = {};

    (function breakDown(num){
        if(isNaN(num))return num;//if it's invalid return
        if(num<=0)return false;
        num = num.toFixed(0);//get rid of decimals

        var divisor = Math.pow(10,num.length-1),//ex. when num = 300, divisor = 100 
        quotient = Math.floor(num/divisor);

        result[divisor]=quotient;//add it to our object
        breakDown(num % divisor);//break down the remainder
    })(number);
        //return result as an object
        return result;
}

该函数将返回一个对象,其中十的倍数为键,数字为值

例如:getMultiplesOfTen(150)=={100:1,10:5} == 1个100的倍数和5个10的倍数。


0

计算 1,592÷64 的商的第一位是在个位、十位、百位还是千位?

答案是:选择...个位、十位、百位、千位。


0

确定商的第一个数字应放置在哪里。不要完成除法。

对于2,370÷24,商的第一个数字应该放在选择...个十百千位。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接