将小数设置为特定值

问题描述 投票:0回答:1

我正在开发一个程序,该程序将根据用户输入的价格和支付金额来计算变化。然后,我将把找零打印到控制台,然后打印不同纸币和硬币的数量。这一切都很好,直到最后一部分,我们在代码中使用 50 美分(半皇冠)。如果更改是 <0.25 i shall set the change to 0, if it's >0.25,<0.75 the change should be set to 0.5, if it's >0.75,则应该是 1。我的问题是,我该怎么做,我浏览了多个论坛来寻找答案,但没有任何效果。

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Diagnostics.Eventing.Reader;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;

namespace Inlämningsuppgift_1__Växel
{
    internal class Program
    {
        static void Main(string[] args)
        {
            // Meddelande som välkomnar användaren.
            Console.WriteLine("Hej och välkommen till kassan, jag ska nu hjälpa dig att beräkna din växel!");

            // Deklarerar variablerna jag ska använda. Vissa har double då jag de ska kunna behandla decimaler. Int för de som är heltal
            double price;
            double paidAmount;
            double change;
            int thousandBills;
            int fiveHundredBills;
            int hundredBills;
            int fiftyBills;
            int twentyBills;
            int tenCrowns;
            int fiveCrowns;
            int oneCrown;
            double halfCrown;
           
            Console.Write("Mata in varans pris: "); // Ber användaren att mata in pris för varan.
            price = Convert.ToDouble(Console.ReadLine()); // Gör om användarens svar från string till double.
            Console.Write("Mata in ditt betalade belopp: "); // Ber användaren mata in betalat belopp.
            paidAmount = Convert.ToDouble(Console.ReadLine()); // Gör om användarens svar från string till double.
            change = paidAmount - price; // Tilldelar variablen "change" genom att subtrahera betalade beloppet från priset.
            Console.WriteLine("Din växel är: " + change + "kr"); // Skriver ut växeln användaren får med hjälp av variabeln "change".

            
            
            
                thousandBills = (int)change / 1000;
                change = change % 1000;
                Console.WriteLine("Antal 1000-sedlar: "+ thousandBills); // Skriver ut antal 1000-sedlar till konsolen.

                fiveHundredBills = (int)change / 500;
                change = change % 500;
                Console.WriteLine("Antal 500-sedlar: " + fiveHundredBills); // Skriver ut antal 500-sedlar till konsolen.

                hundredBills = (int)change / 100;
                change = change % 100;
                Console.WriteLine("Antal 100-sedlar: " + hundredBills); // Skriver ut antal 100-sedlar till konsolen.

                fiftyBills = (int)change / 50;
                change = change % 50;
                Console.WriteLine("Antal 50-sedlar: "+ fiftyBills); // Skriver ut antal 50-sedlar till konsolen.

                twentyBills = (int)change / 20;
                change = change % 20;
                Console.WriteLine("Antal 20-sedlar: " +  twentyBills); // Skriver ut antal 20-sedlar till konsolen.

                tenCrowns = (int)change / 10;
                change = change % 10;
                Console.WriteLine("Antal 10-mynt: " +  tenCrowns); // Skriver ut antal 10-kronor till konsolen.

                fiveCrowns = (int)change / 5;
                change = change % 5;
                Console.WriteLine("Antal 5-mynt: " + fiveCrowns); // Skriver ut antal 5-kronor till konsolen.

                oneCrown = (int)change / 1;
                change = change % 1;
                Console.WriteLine("Antal 1-mynt: " +  oneCrown); // Skriver ut antal 1-kronor till konsolen.

                
                if (change < 0.25)
                {
                    change = 0;
                    
                }
                else if (change > 0.25 && change < 0.75)
                {
                    change = 0.5;
                }
                else 
                {
                            change++;
                }

                }
                
                change = Math.Round(change * 4, MidpointRounding.ToEven) / 4;
                halfCrown = (double)change * 2;
                change = change % 0.5;
                Console.WriteLine("Antal 50-öre: " + halfCrown); // Skriver ut antal 50-ören till konsolen.

            
            // Försökt att få in dessa på lämpliga ställen men inte kommit fram till ett lyckat resultat.
            // change = Math.Round(change * 4, MidpointRounding.ToEven) / 4;
            // change = Math.Round(change * 2.0d / 2.0d);
            Console.ReadLine();
            

        }

    }
}

我已经尝试了最后一个 if 循环和下面的其他代码,但没有任何效果。

c# decimal math.round
1个回答
0
投票

这个怎么样:

change = Math.Round(change * 2) / 2;
© www.soinside.com 2019 - 2024. All rights reserved.