数字不会保留两位小数

Posted

技术标签:

【中文标题】数字不会保留两位小数【英文标题】:Number won't go to two decimal places 【发布时间】:2014-02-19 23:12:48 【问题描述】:

我正在申请兴趣。我试图将总金额的利息金额精确到小数点后 2 位。我在代码中一直使用("N2"),除了标签中的一个区域外,它一直有效。

我使用标签在Radiobutton() 区域显示总金额,它仍然显示完整的数字eg.14.8282423432,而不是小数点后两位。有什么办法可以解决这个问题?谢谢。

public void ShowRates()
    
        Amount = ((Form1)Owner).Amount;
        WeekInterestRate = ((Form1)Owner).WeekInterestRate;
        TwoWeekInterestRate = ((Form1)Owner).TwoWeekInterestRate;
        MonthInterestRate = ((Form1)Owner).MonthInterestRate;
        ThreeMonthInterestRate = ((Form1)Owner).ThreeMonthInterestRate;

        WeekRateLabel.Text = WeekInterestRate.ToString("N2");
        TwoWeekLabel.Text = TwoWeekInterestRate.ToString("N2");
        MonthRateLabel.Text = MonthInterestRate.ToString("N2");
        TMonthRateLabel.Text = ThreeMonthInterestRate.ToString("N2");

        WeekPercent = (Amount * WeekInterestRate / 100);
        WeekInterestAmount = ((WeekPercent / 365) * 7);
        label6.Text = WeekInterestAmount.ToString("N2");

        TwoWeekInterestPercent = (Amount * TwoWeekInterestRate / 100);
        TwoWeekInterestAmount = ((TwoWeekInterestPercent / 365) * 14);
        label7.Text = TwoWeekInterestAmount.ToString("N2");

        MonthPercent = (Amount * MonthInterestRate / 100);
        MonthInterestAmount = ((MonthPercent / 365) * 30);
        label8.Text = MonthInterestAmount.ToString("N2");

        ThreeMonthPercent = (Amount * ThreeMonthInterestRate / 100);
        ThreeMonthInterestAmount = ((ThreeMonthPercent / 365) * 90);
        label9.Text = ThreeMonthInterestAmount.ToString("N2");
    


    public void Back()
    
        Form1 f1 = new Form1();
        f1.Show(this);
        Hide();
    
    public void RadioButtons()
    

        if (radioButton2.Checked == true)
        
            FinalAmount = (Amount + WeekInterestAmount);
            FinalAmount.ToString("N2");
            label10.Text = "Total Amount After 7 Days" + " " + "€" + FinalAmount;
            RateChosen = WeekInterestRate;
            InterestAmount = WeekInterestAmount;
            Days = WEEK;
        

【问题讨论】:

【参考方案1】:
if (radioButton2.Checked == true)

    FinalAmount = (Amount + WeekInterestAmount);
    label10.Text = "Total Amount After 7 Days" + " " + "€" + FinalAmount.ToString("N2");
    RateChosen = WeekInterestRate;
    InterestAmount = WeekInterestAmount;
    Days = WEEK;

【讨论】:

【参考方案2】:

这个:

FinalAmount.ToString("N2");

实际上并没有改变 FinalAmount。

string finald2 = FinalAmount.ToString("N2");
label10.Text = "Total Amount After 7 Days" + " " + "€" + finald2;

试试吧。

【讨论】:

【参考方案3】:

你没有对FinalAmount.toString("N2") 做任何事情,因为它不会修改原始数量,只是它的表示。试试这个:

label10.Text = "Total Amount After 7 Days" + " " + "€" + FinalAmount.ToString("N2");

【讨论】:

【参考方案4】:

这一行什么都不做:

FinalAmount.ToString("N2");

嗯,实际上它做了一些事情。它将值格式化为字符串,但结果会被丢弃。

在您将其放入标签的行中使用该代码:

label10.Text = "Total Amount After 7 Days" + " " + "€" + FinalAmount.ToString("N2");

【讨论】:

【参考方案5】:
public void RadioButtons()


    if (radioButton2.Checked == true)
    
        FinalAmount = (Amount + WeekInterestAmount);
        label10.Text = "Total Amount After 7 Days" + " " + "€" + FinalAmount.ToString("N2");
        RateChosen = WeekInterestRate;
        InterestAmount = WeekInterestAmount;
        Days = WEEK;
    

【讨论】:

【参考方案6】:
label10.Text = string.Format("Total Amount After 7 Days 0:C", FinalAmount);

这将自动将FinalAmount 格式化为带有货币符号和2 个小数位的货币。与N2 一样,它使用CurrentCulture 来确定千位分隔符、货币符号和小数点分隔符。

或者,您可以继续硬编码货币符号并将其更改为:

label10.Text = string.Format("Total Amount After 7 Days €0:N2", FinalAmount);

【讨论】:

以上是关于数字不会保留两位小数的主要内容,如果未能解决你的问题,请参考以下文章

Excel如何实现小数点后保留两位有效数字?

vue输入金额,仅输入数字并且保留两位小数

1.4726保留整数 保留一位小数 保留两位小数 保留三位小数各是多少

Excel设置了单元格格式为保留数字保留两位小数,可是怎么弄都是显示整数,没有显示小数。求助!

JS正则表达式,限制输入数字,且小数点保留两位

计算钱时一定要保留两位小数吗