这里总结c#类型转换的知识
值类型
值类型的类型转换,可以理解为用一个类型A的值去初始化一个类型B的变量。
变宽转换
如果是变宽转换,那么不会有问题。比如32位的int到64位的int,或者是int到float。
变窄转换
如果是变窄转换,那么就可能有问题。(可能会发生溢出)
最近工作中要实现一个计算分期价款程序。
比如1000万的总金额,如果分5期付完,那么第一期要占50%(也就是500),其余四期要均分剩余的50%,也就是125万,那么你得到的结果列表应该是[500,125,125,125,125]
但是并没有那么简单。
首先,不仅仅能够从总金直接生成,因为用户可以根据需要修改任意一期,那么其后金额的也要跟着变化。比如上面例子中的数据,如果修改了第二期。将其修改为200,那么余下三期将分摊剩下的300,那么结果列表将变为[500,200,100,100,100]
。
当然实际情况比这个还要复杂一点,因为要考虑到整除,也就是金额部分不能有小数。那么期数越大,比如11,是很容易不能整除的。
我的第一种做法是将每期的的小数部分保存在一个值中,最后将这个不断累加的值加到最后一期。但是这样算会有误差,(除法带来的误差),而且难以测试。
瑞德被释放后,去安迪在逃离前告诉他的那个橡树下找到一盒现金,两个老朋友终于在墨西哥阳光明媚的海滨重逢了。你是否觉得一切都是那么的温馨,励志?
《肖申克的救赎》是我最喜欢的电影之一,而且我还特意读了斯蒂芬金的原著,我印象深刻的是原著中典狱长最后并没有自杀,而是被检察院带走了。而且原著最后也没有描写两人在重逢的画面。据说电影本来也是打算这么拍的,作为一个开放结局,最后多亏看样片的观众非常喜爱重逢的画面,才使得导演保留。
但是我想从另外一种角度去理解肖申克的救赎。
作为一个一开始编写c的程序员,刚接触c#(静态)或者是python(动态)这样”现代化的语言时”,编写代码的时候常常是使用古老的解决方案。这就是没能理解一门语言的表现。所以这篇博客想总结一下,对集合的操作,有哪些古老的做法,而在”现代语言“中又是如何解决的。
说语言不重要,重要的是编程思维,这种说法确实很是扯淡,因为你用什么语言就决定了你的编程思维,如果你没有长时间使用一门语言,去吸取它的精华,那么你根本不会有什么编程思维,也只能用各种语言写C代码。
说到数据库我们经常会说“增删改查”。对于集合而言也基本是这些操作。
比如将一个整型数组中大于5的元素过滤出来,我们一直会写这样的代码:
大多数人一开始都会认为自己很有想法,勤于思考,有创造力。其实大多数人真么没什么想法,更别说是想象力,甚至说是创造力,充其量是想太多。
如果我给一个三四岁的小孩一盒颜料,他肯定会把天空画的五颜六色的,然后又是些生长奇特的树,奇怪的动物,大人们会去鼓励他们说,“恩,这个孩子有想象力”。
但是其实那根本不是想象力或者是什么创造力。只不过那些孩子什么都不懂罢了,你认为他们所谓的”想象力“作品中的场景能跟漫画家(比如宫崎骏)笔下那些看似奇特但美的真实的场景相比吗?
那些漫画家们,能画出那些极具想象力的作品,不仅仅是因为他们有想象力,有想法,更重要的是他们已经把绘画的知识和绘画的基本功磨练的如此透彻。