Java 当我的实例变量只能是int时,如何使用printf()和mod操作获取十进制数
所以我错过了一些东西。我有一种方法,可以计算并返回股票投资组合的价值。但它使用的是一个混合数,它有一个美元部分和八分之一部分Java 当我的实例变量只能是int时,如何使用printf()和mod操作获取十进制数,java,modulus,integer-division,Java,Modulus,Integer Division,所以我错过了一些东西。我有一种方法,可以计算并返回股票投资组合的价值。但它使用的是一个混合数,它有一个美元部分和八分之一部分 public class StockPortfolio { //Instance Vars private String company; private int numOfShares; private int dollarSharePrice; private int eighthsSharePrice; public int portfo
public class StockPortfolio
{
//Instance Vars
private String company;
private int numOfShares;
private int dollarSharePrice;
private int eighthsSharePrice;
public int portfolioValue()
{
int portVal = (dollarSharePrice * numOfShares)
+ (eighthsSharePrice * numOfShares) / 8;
System.out.printf("Opening portfolio value: $%.2f" , portVal);
return portVal;
}
对于测试类,numOfShares
的值为100
,dollarSharePrice的值为37
和第八份共享价格的5
预期输出应如下所示:
期初投资组合价值:3762.50美元
我真正的麻烦是打印.50。我试过用不同的方法使用%但没有用。任何为我指明正确方向的帮助都将不胜感激。我在这里束手无策
float portVal = (float)9/4;
System.out.printf("Opening portfolio value: $%.2f" , portVal);
输出:
Opening portfolio value: $2.25
不要使用portVal
打印。通过这样的操作直接打印
System.out.printf("Opening portfolio value: $%.2f", (float)((dollarSharePrice * numOfShares) + (eighthsSharePrice * numOfShares) / 8));
但是您将portVal
声明为int
…它应该声明为什么@alfasin修复计算,使portVal
为376250。我敢打赌,在那之后,你一定能找到获得正确输出的方法。确保你最后一次除法。当你处理整数时,(a*b)/c
与a*(b/c)
@PeterLion-看看我的答案。@ajb我得到了portVal
,得到了376250。但是我得到了一个IllegalFormatConversionException
主题说“实例变量只能是int”;这也适用于方法中的局部变量吗?@ajb如果您只处理int,那么您不能期望打印一个分数,除非您以内联方式(在printf
中)进行所有计算并转换为float…根据给出的说明,所有实例变量都必须是int。所以我假设局部变量可以是不同的类型。@PeterLion这很有意义。@alfasin是的,您可以让它显示正确的答案,而不使用任何float
s。我只是不清楚这是否是一个不允许浮动作为局部变量的赋值。