请问一个关于数字格式化的问题 用户要求钱不足10元的按10元计算?

young3292 2007-11-27 12:57:35
用户要求钱不足10元的按10元计算?
比如:
1 ->10



9->10
11->20
99->100

201->210
219->220
请问有什么好的公式可以遵循吗?

...全文
219 26 打赏 收藏 转发到动态 举报
写回复
用AI写文章
26 条回复
切换为时间正序
请发表友善的回复…
发表回复
yyne 2007-11-28
  • 打赏
  • 举报
回复
ggsddu.
sharpidea 2007-11-27
  • 打赏
  • 举报
回复
.....浮躁,借9楼Ceiling 定稿
sharpidea 2007-11-27
  • 打赏
  • 举报
回复
output = Math.Ceiling(input / 10) * 10;
sharpidea 2007-11-27
  • 打赏
  • 举报
回复
谢谢ceidolon 指正

/bow orz

顶9楼

output = (input % 10)==0?input:Math.Round((input + 5) / 10) * 10;

boblaw 2007-11-27
  • 打赏
  • 举报
回复
實在抱歉,對不住樓上各位,的確有問題,sorry,先喫飯,呵
boblaw 2007-11-27
  • 打赏
  • 举报
回复
to:樓上
如果看不明白,不要急於判斷,建議先測試一下再說,呵呵
ceidolon 2007-11-27
  • 打赏
  • 举报
回复
何必呢...

有时间不如把自己的方法完善一下吧,在错误答案基础上建立起来的争议有什么意义呢

5楼的朋友用10的倍数,比如120测下自己的方法
8楼的朋友用122或者129.1这样的数测下自己的方法

然后再看下楼主的要求吧
sharpidea 2007-11-27
  • 打赏
  • 举报
回复
退而求其次的是谁?最优的又是谁?
何必哪,不正确就是不正确,题设是什么,解决方案是否符合题设?
说句实话,优秀的算法向来都是钻牛角钻出来的,就事论事,何必往面子上挂
laoshi10 2007-11-27
  • 打赏
  • 举报
回复
double a = 120.01;
int b = Convert.ToInt32(Math.Truncate(a + 9.9999999));
-------------------------------------------------------
神奇的算法.....a=121.01呢?
shinaterry 2007-11-27
  • 打赏
  • 举报
回复
何必动怒...

大家都是帮人解决问题...

^o^
boblaw 2007-11-27
  • 打赏
  • 举报
回复
金额精确到小数位很少?
银行有多少客户?
保险有多少客户?
这么算下来,不发了?
---------------
事實上,他們是發了。
呵,樓上不必鑽太深了。
具體問題應該具體分析,不是任何事情都採用一成不變的算法。
那我想問你,7位小數夠不夠,不夠?10位呢?
在確保不出問題的前提下,能以最優的方式來解決問題,為什么要退而求其次呢?
sharpidea 2007-11-27
  • 打赏
  • 举报
回复
金额精确到小数位很少?
银行有多少客户?
保险有多少客户?
这么算下来,不发了?
harryheart 2007-11-27
  • 打赏
  • 举报
回复
120.001
拿张一分的撕个角给你
lsj_zrp 2007-11-27
  • 打赏
  • 举报
回复
private int ToInt(double dNum)
{
return (int)(dNum / 10) * 10 + (dNum % 10 == 0 ? 0 : 10);
}
boblaw 2007-11-27
  • 打赏
  • 举报
回复
暈樓上的,金額精確的小數位畢竟是很少的,既然要鑽牛角尖,就用這個吧

double a = 120.01;
int b = Convert.ToInt32(Math.Truncate(a + 9.9999999));

沒誰會數錢數到小數點後7位吧?
sharpidea 2007-11-27
  • 打赏
  • 举报
回复
正解在5楼
sharpidea 2007-11-27
  • 打赏
  • 举报
回复
8楼的,如果是120.001呢?
root_ 2007-11-27
  • 打赏
  • 举报
回复
double a = Convert.ToDouble(textBox1.Text);
double b = Math.Ceiling(a);
//b = (b % 10 == 0) ? b : ((int)b / 10) * 10 + 10;
b = (b % 10 == 0) ? b : Math.Ceiling(b / 10) * 10;
MessageBox.Show(b.ToString());
boblaw 2007-11-27
  • 打赏
  • 举报
回复
最有效率的算法如下:

double a = 120.01;
int b = Convert.ToInt32(Math.Truncate(a + 9.99));
yhy0611 2007-11-27
  • 打赏
  • 举报
回复
接个分如何?
加载更多回复(6)

110,499

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧