c# decimal, ulong, 计算数量

c# decimal, ulong, calculating quantities

我有我的 problem.I 代码,我几乎已经完成了一些测试,我得到的结果略有不同。正如您将看到的,变量 c 应该是 "decimal"。但是当它乘以变量 "n" 时。 这是问题所在:

你的任务是编写一个程序来计算 Ivancho 当天可以制作的蛋糕数量以及每个蛋糕的价格。你会得到一些数字。 Ivancho 那天想要的蛋糕数量,面粉的公斤数 制作一个蛋糕所需的信息、供应商可以给您的面粉公斤数、您可以购买的松露数量以及每块松露的价格。如果 Ivancho 有足够的面粉来做他想要的蛋糕,他会做 正是这个数量,剩余的面粉将被丢弃,您应该在控制台上打印“所有产品可用,蛋糕的价格:{一个蛋糕的价格}”。或者,如果没有足够的面粉,你应该向下取整 可生产的蛋糕数量为整数并打印出来 在控制台上显示格式“只能制作{可以生产的蛋糕数量}个蛋糕,需要{需要多少公斤面粉}公斤面粉”,其中需要的公斤面粉是面粉公斤数的差值 需要制作 Ivancho 想要的蛋糕数量和可用的面粉公斤数。 输入 应从控制台读取输入数据。它由五个输入值组成,每个输入值单独一行: • 数字n——Ivancho 想要的蛋糕数量。 • 数字c – 制作一个蛋糕所需的面粉千克数。 • 数量f – 可用面粉的千克数。 • 数字t – 可用的松露数量。 • 数字 p – 一块松露的价格。

 如果没有足够的面粉来制作 Ivancho 想要在控制台上打印的蛋糕数量: o“只能做{可以生产的蛋糕数}个蛋糕,需要{需要多少千克面粉} kg 更多面粉”  如果面粉足够:  可制作的蛋糕数量必须为整数;蛋糕的价格和公斤 所需面粉的数量必须四舍五入到小数点后两位数。 约束条件  数字 n 将是 [1 … 18 446 744 073 709 551 615] 范围内的有效整数  数字 c 将是 [0 … 7.9 x 1028] 范围内的浮点数。  数字 f、t 和 p 将是 [0 ... 4 294 967 295] 范围内的有效整数。  使用系统; 使用 System.Collections.Generic; 使用 System.Linq; 使用 System.Text; 使用 System.Threading.Tasks;

namespace CakeTycoon
{
    class Program
    {
        static void Main(string[] args)
        {
            var n = ulong.Parse(Console.ReadLine()); // amount of cakes George wants
            var c = decimal.Parse(Console.ReadLine()); // kg of fllour needed to make 1 cake

            var f = uint.Parse(Console.ReadLine()); // kg of flour available
            var t = uint.Parse(Console.ReadLine()); // amount of truffles available
            var p = uint.Parse(Console.ReadLine()); // price of one truffle


            var truffelCost = t * p; // total price of truffles

            var cakesCanBeMade = Math.Floor(f / c );

            var cakePrice = (truffelCost / n) * 1.25;
            var flourNeeded = 0.00;
            var totalFlour = n * c;

            if (cakesCanBeMade >= n)
            {
                Console.WriteLine("All products available, price of a cake: {0}", cakePrice); 

            }
            else if (cakesCanBeMade < n)
            {
                flourNeeded = totalFlour - f ;
                Console.WriteLine("Can make only {0} cakes, need {1}kg more flour", cakesCanBeMade,flourNeeded);
            }

        }
    }
}
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CakeTycoon
{
    class Program
    {
        static void Main(string[] args)
        {
            ulong cakesWanted = ulong.Parse(Console.ReadLine());
            double kilosPerCake = double.Parse(Console.ReadLine());
            uint flourKilos = uint.Parse(Console.ReadLine());
            uint truffles = uint.Parse(Console.ReadLine());
            uint trufflePrice = uint.Parse(Console.ReadLine());

            ulong truffleCost = (ulong)truffles * trufflePrice;
            double cakesProduced = Math.Floor(flourKilos / kilosPerCake);

            if (cakesProduced < cakesWanted)
            {
                double kilogramsNeeded = (kilosPerCake * cakesWanted) - flourKilos;
                Console.WriteLine("Can make only {0} cakes, need {1:F2} kg more flour", cakesProduced, kilogramsNeeded);

            }
            else
            {
                double cakeCost = ((double)truffleCost / cakesWanted) * 1.25d;
                Console.WriteLine("All products available, price of a cake: {0:F2}", cakeCost);
            }
        }
    }
}