例如,我收到整数50155,这意味着50和15.5 / 32美元.然后我收到10210,即10和21/32美元.所以50 15.5 / 32 10 21/32 = 61 4.5 / 32,因此:
50155 10210 = 61045
我想再次避免这种情况:
int a = 50155;int b = a / 1000;float c = a % 1000;float d = b;d += c / 320f;// d = 50.484375
我更喜欢这个:
int a = 50155;int b = 10210;int c = MyClass.Add(a.b); // c = 61045...public int Add(int a,int b){ // ?????}
在此先感谢您的帮助!
解决方法 好吧,我不认为你需要使用浮点…public static int Add(int a,int b){ int firstWhole = a / 1000; int seconDWhole = b / 1000; int firstFraction = a % 1000; int secondFraction = b % 1000; int totalFraction = firstFraction + secondFraction; int totalWhole = firstWhole + seconDWhole + (totalFraction / 320); return totalWhole * 1000 + (totalFraction % 320);}
或者,您可能希望创建一个可以转换为整数格式的自定义结构,并重载运算符.这将允许您编写更易读的代码,这些代码不会意外地导致其他整数被视为这种略微奇怪的格式.
编辑:如果你被迫坚持使用“单整数”格式,但要稍微调整一下你可能要考虑使用512而不是1000.这样你可以使用简单的掩码和移位:
public static int Add(int a,int b){ int firstWhole = a >> 9; int seconDWhole = b >> 9; int firstFraction = a & 0x1ff int secondFraction = b & 0x1ff; int totalFraction = firstFraction + secondFraction; int totalWhole = firstWhole + seconDWhole + (totalFraction / 320); return (totalWhole << 9) + (totalFraction % 320);}
仍然有320的混乱,但它至少有点好.
总结以上是内存溢出为你收集整理的c# – 通过整数进行分数计数全部内容,希望文章能够帮你解决c# – 通过整数进行分数计数所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)