public static explicit operator Currency(float value)
{
uint dollars = (uint)value; //value is 5.35,dollars is 5
ushort cents = (ushort)((value - dollars) * 100); //value is not change, but cents is 34 after explicit convert to ushort.
return new Currency(dollars, cents);
}主函数中.Currency balance = new Currency(50,35);
Console.WriteLine(balance);
Console.WriteLine("balance is " + balance);
Console.WriteLine("balance is (using ToString()) " + balance.ToString());
float balance2= balance;
Console.WriteLine("After converting to float, = " + balance2);
balance = (Currency) balance2;
Console.WriteLine("After converting back to Currency, = " + balance);
{
uint dollars = (uint)value; //value is 5.35,dollars is 5
ushort cents = (ushort)((value - dollars) * 100); //value is not change, but cents is 34 after explicit convert to ushort.
return new Currency(dollars, cents);
}主函数中.Currency balance = new Currency(50,35);
Console.WriteLine(balance);
Console.WriteLine("balance is " + balance);
Console.WriteLine("balance is (using ToString()) " + balance.ToString());
float balance2= balance;
Console.WriteLine("After converting to float, = " + balance2);
balance = (Currency) balance2;
Console.WriteLine("After converting back to Currency, = " + balance);
public static explicit operator Currency(float value)
{
uint dollars = (uint)value; //value is 5.35,dollars is 5
ushort cents = (ushort)((value - dollars) * 100); //value is not change, but cents is 34 after explicit convert to ushort.
return new Currency(dollars, cents);
}高级编程是这样解释的...
在转为 uint 的时候,就被截取了...是略小于 0.35的数... 是这样么...因为单单不知道的人来说...就如,我调试的时候,发现这里的 dollars(运算符重装方法中)是显示 0.35的..在 cent的时候才变成 0.34....我总以为是转换为 ushort时才变...