0

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

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

但是 number % 10,condition 现在只接受不带小数的数字,因此如果我输入带小数的数字,程序将关闭,我只需要数字的替代品% 10

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

4 回答 4

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
于 2013-11-02T00:02:10.663 回答
1

看来您正在寻找类似的东西

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

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

演示

于 2013-11-02T00:02:41.753 回答
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);
}

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

于 2013-11-02T00:01:13.643 回答
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

现在你可以用字符串加入这个 int 来为 printf 创建模式。

于 2013-11-01T23:59:31.333 回答