0

我要做的就是创建一个简单的薪酬计算器。用户输入他们的 baseSalary、totalSales 和 CommissionRate。该程序运行得很好,但总支付不正确。任何帮助都是极好的。这很可能是一个简单的修复,但由于这只是我的 VB 课程的第二天,我不知道如何解决这个问题。预先感谢您提供的任何帮助!

'   Total Pay Calculator
'   By: Jeremy Flaugher
'   01/17/2013


Module myPay
    Sub Main()
        '   Declare the variables
        Dim baseSalary As Integer
        Dim totalSales As Integer
        Dim commissionRate As Decimal
        Dim totalPay As Integer

        '   Title and By line
        Console.Out.WriteLine("Welcome to the Paycheck Calculator")
        Console.Out.WriteLine("Created by Jeremy Flaugher" & vbCrLf)

        '   User Prompts
        Console.Out.Write("Please enter your Base Salary: $")
        baseSalary = Console.In.ReadLine()

        Console.Out.Write("Please enter your number of sales: ")
        totalSales = Console.In.ReadLine()

        Console.Out.Write("Please enter your Commission Rate in decimal form: ")
        commissionRate = Console.In.ReadLine()

        '   Processes
        totalPay = (totalSales * commissionRate) + baseSalary
        Console.Out.WriteLine("Your paycheck will total: " & (FormatCurrency(totalPay)))
        Console.ReadKey()
    End Sub
End Module

运行程序后,我正在检查计算器上的输出。假设我输入 100 美元作为基本工资,5 作为销售数量,0.5 作为佣金率。在计算器上,我得到了 102.5 美元的总工资,但在运行程序时,我得到了 102.00 美元。我怎样才能解决这个问题。

4

1 回答 1

2

首先,我会将Option Strict On放在您模块的顶部,这是一种很好的做法,并且可以让您免于尝试弄清楚为什么事情不正确的痛苦。在您的情况下,我相信您的问题是您使用小数作为计算的一部分,但您将结果放入整数。尝试将 totalPay 也声明为小数。

从上面的链接使用 Option Strict 的好处:

当您将 Option Strict 设置为 On 时,Visual Basic 会检查是否为所有编程元素指定了数据类型。可以显式指定数据类型,也可以使用本地类型推断指定数据类型。建议为所有编程元素指定数据类型,原因如下:

  • 它为您的变量和参数启用 IntelliSense 支持。这使您能够在键入代码时查看它们的属性和其他成员。
  • • 它使编译器能够执行类型检查。类型检查可帮助您找到由于类型转换错误而可能在运行时失败的语句。它还标识对不支持这些方法的对象的方法的调用。
  • • 它加快了代码的执行速度。这样做的一个原因是,如果您没有为编程元素指定数据类型,Visual Basic 编译器会为其分配 Object 类型。编译后的代码可能必须在 Object 和其他数据类型之间来回转换,这会降低性能。
于 2013-01-18T04:43:55.170 回答