【发布时间】:2014-07-29 13:12:40
【问题描述】:
我有一个特殊情况,我需要尽可能返回“粗俗”分数。我想出的代码如下
var complexFractionString = heaveValue.ToComplexFractionString();
complexFractionString = complexFractionString.Replace("1/8", "⅛");
complexFractionString = complexFractionString.Replace("1/4", "¼");
complexFractionString = complexFractionString.Replace("3/8", "⅜");
complexFractionString = complexFractionString.Replace("1/2", "½");
complexFractionString = complexFractionString.Replace("5/8", "⅝");
complexFractionString = complexFractionString.Replace("3/4", "¾");
complexFractionString = complexFractionString.Replace("7/8", "⅞");
return complexFractionString;
.ToComplexFractionString() 是一种以字符串格式返回双精度数的最小公分母分数的方法。即 .5 的输入将返回“1/2”
这段代码现在适用于我的用例,但我根本不喜欢它的结构。这是非常脆弱的,因为“1/16”或“1/32”的一小部分会在不改变的情况下通过,而且代码是一堆行来做一些应该相对容易的事情。
在 C# 中有没有更好的方法来做到这一点?
【问题讨论】:
-
为什么用字符串做数学?有一个
struct Fraction { }并根据 值 而不是它们的字符串表示形式在ToString()中编写代码。 -
我没有用字符串做任何数学运算...我用双精度数做了数学运算,并以分数形式将数字报告回我的 GUI。不幸的是,我的一些控件不喜欢显示“/”,所以我使用“粗俗”分数来解决这个问题。
-
如果你有
71/80怎么办? -
什么样的显示器可以显示½而不是1/2?
-
WPF DataGrids 难以显示 '.'和标题中的“/”。即,如果您尝试显示标题,但该列中的值不会显示。
标签: c#