如何得到两个数相除的小数余数?
How to get decimal remainder of two numbers divided?
所以我试图制作一个脚本,用户输入他们需要行驶的英里数和他们每小时行驶的英里数,然后脚本输出他们必须行驶的剩余小时数和分钟数。我一直在尝试使用 % 来查找剩余的英里数 traveled/MPH 但它输出了错误的数字。无论如何只能从两个相除的数字中得到小数?例如,如果我执行 100/65,我得到大约 1.538 的输出,我只想使用 0.538。但是当我使用 100%65 时,我得到 35。这是我当前的脚本供参考:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TimeCalculator
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Welcome to the Travel Time Calculator");
string answer;
//creates variable for the answer
do
//creates loop to continue the application
{
string grade;
//Console.WriteLine(100-(int)((double)100/65)*65);
Console.WriteLine(" ");
Console.Write("Enter miles: ");
Decimal val1 = Convert.ToDecimal(Console.ReadLine());
//converts input to decimal allowing user to use decimals
Console.Write("Enter miles per hour: ");
Decimal val2 = Convert.ToDecimal(Console.ReadLine());
//converts input to decimal allowing user to use decimals
Console.WriteLine(" ");
Console.WriteLine("Estimated travel time");
Console.WriteLine("Hours: " + (((int)val1 / (int)val2)));
//converts values to integers and divides them to give hours traveled
//double floor1 = Math.Floor(((double)val1/(double)val2));
Console.WriteLine("Minutes: " + (Decimal.Remainder((decimal)val1, (decimal)val2)));
//converts values to double and gets the remainder of dividing both values to find minutes
Console.WriteLine();
//enters one line
Console.Write("Continue? (y/n): ");
answer = Console.ReadLine();
//the string is equal to what the user inputs
Console.WriteLine();
}
while (answer.ToUpper() == "Y");
//if y, the application continues
}
}
100/65 是 integer division。你需要的是
double d = (100d / 65) % 1;
这会给你 0.53846153846153855
如果您想要从初始值开始的小时和分钟,那么这应该可以为您完成(您可能需要在其中进行一些显式转换,这是未经测试的)
var result = va1 / val2;
var hours = Math.Floor(result);
var minutes = (result - hours) * 60;
所以我试图制作一个脚本,用户输入他们需要行驶的英里数和他们每小时行驶的英里数,然后脚本输出他们必须行驶的剩余小时数和分钟数。我一直在尝试使用 % 来查找剩余的英里数 traveled/MPH 但它输出了错误的数字。无论如何只能从两个相除的数字中得到小数?例如,如果我执行 100/65,我得到大约 1.538 的输出,我只想使用 0.538。但是当我使用 100%65 时,我得到 35。这是我当前的脚本供参考:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace TimeCalculator
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine("Welcome to the Travel Time Calculator");
string answer;
//creates variable for the answer
do
//creates loop to continue the application
{
string grade;
//Console.WriteLine(100-(int)((double)100/65)*65);
Console.WriteLine(" ");
Console.Write("Enter miles: ");
Decimal val1 = Convert.ToDecimal(Console.ReadLine());
//converts input to decimal allowing user to use decimals
Console.Write("Enter miles per hour: ");
Decimal val2 = Convert.ToDecimal(Console.ReadLine());
//converts input to decimal allowing user to use decimals
Console.WriteLine(" ");
Console.WriteLine("Estimated travel time");
Console.WriteLine("Hours: " + (((int)val1 / (int)val2)));
//converts values to integers and divides them to give hours traveled
//double floor1 = Math.Floor(((double)val1/(double)val2));
Console.WriteLine("Minutes: " + (Decimal.Remainder((decimal)val1, (decimal)val2)));
//converts values to double and gets the remainder of dividing both values to find minutes
Console.WriteLine();
//enters one line
Console.Write("Continue? (y/n): ");
answer = Console.ReadLine();
//the string is equal to what the user inputs
Console.WriteLine();
}
while (answer.ToUpper() == "Y");
//if y, the application continues
}
}
100/65 是 integer division。你需要的是
double d = (100d / 65) % 1;
这会给你 0.53846153846153855
如果您想要从初始值开始的小时和分钟,那么这应该可以为您完成(您可能需要在其中进行一些显式转换,这是未经测试的)
var result = va1 / val2;
var hours = Math.Floor(result);
var minutes = (result - hours) * 60;