如何在不使用数字%10的情况下使用java找到数字整数的最右边数字?看到描述

时间:2013-11-01 23:35:13

标签: java printf modulus

现在我正在使用这样的东西: 基本上该程序应该是 将X(#的最右边的数字)打印到X小数位,例如:

  • 输入3.56,应显示0000000000000003.560
  • 输入56.7应显示:000000000056.700000
  • 输入1002.5应显示00000000000001002.50

但是号码% 10,条件现在只接受号码 没有小数,所以如果我输入,程序将关闭 带小数的数字 我只需要数字% 10的替代方案。

double number;
if (number % 10 == 1)
System.out.printf("%020.1f\n",number);

4 个答案:

答案 0 :(得分:1)

如果我已正确解释您的问题,那么这看起来就像您要求的那样:

public void test() {
  strangePrint(3.1415);
  strangePrint(2.0);
  strangePrint(2.1);
  strangePrint(2.2);
  strangePrint(2.999);
  strangePrint(37.4);
  strangePrint(3.56);
  strangePrint(56.7);
  strangePrint(1002.5);
}

private void strangePrint(double d) {
  // Get the integer part
  int n = (int)d;
  // The last digit of the integer defines the decimal places.
  int digits = n%10;
  System.out.printf("%020."+digits+"f\n", d);
}

打印

0000000000000003.142
00000000000000002.00
00000000000000002.10
00000000000000002.20
00000000000000003.00
000000000037.4000000
0000000000000003.560
0000000000056.700000
00000000000001002.50

答案 1 :(得分:1)

您似乎正在寻找类似

的内容
System.out.printf("%020." + ((int) number) % 10 + "f\n", number);

((int) number)将摆脱分数制作56.7 - > 56,现在您可以安全地使用%10来获取最后一位数字。

DEMO

答案 2 :(得分:0)

格式中的数字:

ABCDEX.FGHI

您可以通过以下方式提取X

int x = (int) original; //get rid of what is after the decimal point
//now x is ABCDEX
x = x % 10;
//now x is X

现在你可以用string连接这个int来为printf创建模式。

答案 3 :(得分:0)

根据您的原始帖子,您似乎不允许使用mod,所以我会这样做:

private void transform(Double number)
{
    int result;
    int x = number.intValue();

    if (x < 10)
    {
        result = x;
    }
    else
    {
        Double y = x / 10.0;
        int z = y.intValue();
        result = x-10*z;
    }

    System.out.printf("%020." + result + "f\n", number);
}

测试运行:

transform(3.56);
transform(56.7);
transform(1002.5);  

打印:

  

0000000000000003.560
  0000000000056.700000
  00000000000001002.50

修改
如果我误解了你并且你被允许使用mod,那么答案很简单:

private void transform(Double number)
{ 
     System.out.printf("%020." + ((int) number) % 10 + "f\n", number);
}

正如其他人所说的那样。对不起,如果我误解了。