亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# 中的英尺到米轉換器壞了?

C# 中的英尺到米轉換器壞了?

C#
小怪獸愛吃肉 2022-07-23 17:36:48
我正在嘗試制作一個簡單的英尺到米轉換器,但是發生了這種情況:using System;using System.Windows;using System.Windows.Controls;namespace CoolConversion{    /// <summary>    /// Interaction logic for MainWindow.xaml    /// </summary>    public partial class MainWindow : Window    {        decimal feet;        decimal meter;        public MainWindow()        {            InitializeComponent();        }        private void TextBox_TextChanged(object sender, TextChangedEventArgs e)        {            feet = Convert.ToDecimal(Feet.Text);            meter = feet / 3.281;        }    }}這是我目前擁有的代碼。起初,feet&meter是 int,但我無法將 int 除以 3.281。我將它們更改為小數,現在出現此錯誤:錯誤 CS0019 運算符“/”不能應用于“十進制”和“雙精度”類型的操作數如果我不能將小數除以整數,并且如果我不能/在小數上使用符號,我應該如何除以小數?
查看完整描述

2 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

這里的問題是編譯器認為你的常量3.281是 type double。如果您打算使用諸如decimal您必須附加m后綴的類型。同樣,對于float類型,您必須附加f后綴。根據 MSDN:

默認情況下,賦值運算符右側的實數文字被視為double.


float

因此,要初始化float變量,請使用后綴for F,如下例所示:
float x = 3.5F;


double

但是,如果您希望將整數視為double,請使用后綴dor D,例如:
double x = 3D;


decimal

如果您希望將數字實數文字視為decimal,請使用后綴mor M,例如:
decimal myMoney = 300.5m;


我的建議

在使用它之前,您應該真正確定您實際需要使用的類型。在將英尺轉換為的情況下,我會使用doubleor floatdouble通常是這種情況,因為它更精確。

private double feet = 0.0d;

private double meters = 0.0d;


private void TextBox_TextChanged(object sender, TextChangedEventArgs e) {

    feet = Convert.ToDouble(Feet.Text);

    meters = feet / 3.281d;

}

該decimal類型通常用于保存貨幣值,其中double和float用于諸如此類的計算。此外,這不是必需的,但如果您曾經使用多種類似類型,例如float, double, decimal;的情況 使用每個后綴來清楚地傳達您打算使用的類型總是一個好主意。


最后說明

您可以decimal像其他人指出的那樣強制轉換,但是當您可以decimal通過使用指定時,這是不必要的強制轉換3.281m。在性能很重要的環境中,您應該盡可能避免不必要的強制轉換。


另一方面,在嘗試轉換之前,您應該確保嘗試轉換的文本是有效值。我更喜歡使用(如果我沒記錯的話TryParse,所有數字類型都應該有一個方法)。TryParse這背后的原因是,如果我123a以您的方法當前工作的方式輸入您的文本框,它會立即爆炸。解決這個問題非常簡單:


private void TextBox_TextChanged(object sender, TextChangedEventArgs e) {

    if (double.TryParse(Feet.Text, out feet))

        meters = feet / 3.281d;

    else

        MessageBox.Show($"You've entered an invalid value: {Feet.Text}.");

}


查看完整回答
反對 回復 2022-07-23
?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

默認情況下,3.281它本身是一個雙精度浮點數。您可以通過在數字末尾decimal添加 a 來使用 -literal 表示法m。


meter = feet / 3.281m;

為簡潔起見,如果您曾經使用過聲明為 a 的變量,則double在您需要在每個操作數中執行兩種不同類型的計算時,您始終可以將其轉換為小數。


double feetToMeterValue = 3.281;

meter = feet / (decimal)feetToMeterValue;

這也適用于其他類型,但請注意,在轉換為特定類型(即double>float和更明顯decimal的int.


查看完整回答
反對 回復 2022-07-23
  • 2 回答
  • 0 關注
  • 143 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號