【发布时间】:2017-01-16 21:32:39
【问题描述】:
不确定这是 100% 错误,但行为真的很奇怪。我的任务是正确格式化分数。例如,如果:
int numerator = -7;
int denominator = 100;
如果应用下一行代码:
string fraction = numerator.ToString("#/"+ denominator +";-#/" + denominator +";0");
这是根据微软的部分分隔符逻辑:https://msdn.microsoft.com/en-us/library/0c899ak8%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396#The
如果分子为正 (7),则应产生“7/100”,如果分子为负 (-7),则应产生“-7/100”,如果分子为 0,则应产生“0”。因为格式字符串看起来像这样“#/100;- #/100;0"
但由于某种原因,它不适用于负面情况。如果分子为正,则所有行为都符合预期,但如果由于某种原因为负,它将替换生成的字符串中的最后一个数字。所以我最终得到这样的输出:“-/107”。有什么想法吗?
【问题讨论】:
-
如果您只是将格式字符串硬编码为“#/100;-#/100;0”,对您的帮助会更简单。为什么要在其中引入变量?
-
100 这只是一个例子。分母可以是任意数字
标签: c# string-formatting number-formatting