如何在单个变量中存储比率并在C#中读回

时间:2010-09-20 09:18:28

标签: c#

假设我有一个系统,必须存储有多少人在战斗机A上投票,有多少人在战斗机B上投票。

比方说,比例是200:1

如何将该值存储在单个变量中,而不是将两个值(A中的选民数和B上的选民数存储在两个变量中)。

你会怎么做?

7 个答案:

答案 0 :(得分:11)

从问题措辞的方式来看,这可能不是您正在寻找的答案,但最简单的方法是使用结构:

struct Ratio
{
    public Ratio(int a, int b)
    {
        this.a = a;
        this.b = b;
    }

    public int a = 1;
    public int b = 1;
}

您几乎肯定会想要使用属性而不是字段,您可能还想重载==!=,例如:

public static bool operator ==(Ratio x, Ratio y)
{
    if (x.b == 0 || y.b == 0)
        return x.a == y.a;
    // There is some debate on the most efficient / accurate way of doing the following
    // (see the comments), however you get the idea! :-)
    return (x.a * y.b) == (x.b / y.a);
}

public static bool operator !=(Ratio x, Ratio y)
{
    return !(x == y);
}

public override string ToString()
{
    return string.Format("{0}:{1}", this.a, this.b);
}

答案 1 :(得分:4)

根据定义,比率是除以两个数字的结果。因此,只需进行划分并将结果存储在double

double ratio = (double)a/b;

答案 2 :(得分:4)

string ratio =“200:1”; //简单:)

答案 3 :(得分:3)

你可以像这样使用struct:

struct Ratio
{
    public void VoteA()
    {
        A++;
    }

    public void VoteB()
    {
        B++;
    }

    public int A { get; private set; }
    public int B { get; private set; }

    public override string ToString()
    {
        return A + ":" + B;
    }
}

如果您只有两个选项,那么实施投票就足够了。否则你应该实现构造函数接受多个选项,数据结构来存储投票数,投票方法或索引操作符。 如果您需要某些整数数学应用程序的比率,您可能需要实现GCD方法。

答案 4 :(得分:1)

它认为您需要在string中为单个变量

执行此操作
string s=string.Format("{0}:{1}", 3, 5);

答案 5 :(得分:1)

阵列?对于2个变量,int[] ratio = new int[2]比整个结构/类要薄得多。虽然如果你想为它添加辅助方法,但结构是可行的方法。

答案 6 :(得分:0)

在我看来,你可以使用双打。

比率数

1:200 1.200

200:1 200:1

0:1 0.1

1:0 1.0

0:0 0.0

它易于使用。

firstNumber = (int)Number;
secondNumber = Number - firstNumber;