现在我正在使用这样的东西: 基本上该程序应该是 将X(#的最右边的数字)打印到X小数位,例如:
但是号码% 10
,条件现在只接受号码
没有小数,所以如果我输入,程序将关闭
带小数的数字
我只需要数字% 10
的替代方案。
double number;
if (number % 10 == 1)
System.out.printf("%020.1f\n",number);
答案 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
来获取最后一位数字。
答案 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);
}
正如其他人所说的那样。对不起,如果我误解了。