java - 当我尝试将数字减去百分比时,为什么我的程序会输出错误的计算结果?
问题描述
我是编码新手。我正在通过编写一个程序来练习,该程序在减去他/她的经纪人的剪辑后给演员他/她的报酬。为什么会输出错误的计算?我似乎无法弄清楚问题所在。
我在网上搜索,我确信我的数学是正确的。除了正确答案之外,它没有理由输出任何内容。
假设演员的片酬是 100.00 美元,经纪人的片酬是 15%。演员应该得到 %85.00,对吧?奇怪的是,控制台输出 600 美元。
我知道这违反了网站的规则,但我发现复制和粘贴整个项目很重要,但时间不长。这里是:
.
.
导入 java.util.Scanner;
公共类主要{
static int payBefore;
static int percentageTaken;
static int totalAfterCut;
static int percentageDividedBy100 = percentageTaken/100;
static int middleOfCalculation;
static Scanner payBeforeSc = new Scanner(System.in);
static Scanner percentageSc = new Scanner(System.in);
static Scanner middleOfCalculationSc = new Scanner(System.in);
公共静态无效主要(字符串参数[]){
incomeAndPercentageQuestions();
}
私人静态无效收入和百分比问题(){
System.out.println("How much did your job pay before any agent cuts?");
payBefore=payBeforeSc.nextInt();
System.out.println("What percentage is your agent taking?");
percentageTaken=percentageSc.nextInt();
calculation();
}
私人静态无效计算(){
totalAfterCut = payBefore * (100 / percentageTaken);
output();
}
私人静态无效输出(){
System.out.println("$" + totalAfterCut + " will be your pay after your agent's cut.");
}
}
解决方案
我认为这与您的数学不正确有关。你有错误的划分顺序。它应该是这样的:
totalAfterCut = payBefore * (percentageTaken / 100.0); //Actually amount deducted
正如 Nexevis 指出的那样,您的数学返回的是扣除的金额,而不是扣除后的金额。所以也改变它,以便从 payBefore 中减去扣除的金额:
totalAfterCut = payBefore - (payBefore * (percentageTaken / 100.0));
在处理这些类型的值时,您还应该使用浮点数据类型,因为对于整数,小数部分将被截断。这意味着 15/100(两个整数)将始终导致 0。您可以将 percentTaken 保留为整数,然后使用 100.0(而不是 100)来获得浮点值。如果您担心值的美分部分,还要确保将结果保存为浮点数据类型。
double totalAfterCut;
totalAfterCut = payBefore - payBefore * (percentageTaken / 100.0);
我还将 payBefore 更改为浮点数据类型,以便用户可以输入准确的金额,包括美分。
double payBefore;
payBefore=payBeforeSc.nextDouble();
推荐阅读
- c# - 解析节点具有数值的 JSON
- excel - VB-Script 在调用 VBA-Script 后休眠
- google-cloud-platform - 使用 GCE 元数据作为 ansible 事实或变量
- api - “消息”资源不支持“$filter”参数值
- javascript - 使用 javascript 定位表格单元格
- swift - viewDidLoad 中的 EXC_BAD_ACCESS(代码=1,地址=0x16fc5da60)
- javascript - 正则表达式验证用户定义的条件评估逻辑
- php - 如何使用 PHP 将 DOB 转换为正确的 word 格式
- php - 使用php在特定xml兄弟子节点之前解析xml多个兄弟子节点
- rotation - 旋转多线(点系列)以匹配区域