我很想知道如何将数字舍入到最接近的第十个整数.例如,如果我有:
int a = 59 / 4;
Run Code Online (Sandbox Code Playgroud)
以浮点计算的14.75; 如何将数字存储为"a"中的15?
假设a并且b都是类型int,并且b非零.考虑a/b在以下情况下执行的结果:
a并且b都是非负的.a并且b都是消极的.在案例1中,结果向下舍入到最接近的整数.但标准对案例2和案例3有什么看法?我发现在互联网上浮动的旧草案表明它是依赖于实现的(是的,甚至是案例2),但委员会倾向于使其始终"向零舍入".有谁知道(最新)标准说的是什么?请仅根据标准回答,而不是有意义的回答,或者特定的编译器做什么.
是否有一种简单的pythonic方法可以在不使用浮点的情况下舍入到最接近的整数?我想做以下但使用整数运算:
skip = int(round(1.0 * total / surplus))
Run Code Online (Sandbox Code Playgroud)
==============
@John:浮点数不能跨平台重现.如果您希望您的代码在不同平台上传递测试,那么您需要避免浮点(或者在测试中添加一些hacky espilon内容并希望它能够正常工作).以上可能很简单,在大多数/所有平台上都是相同的,但我宁愿不做出这个决定,因为更容易完全避免浮点.那"不符合Python的精神"怎么样?
我正在处理经常使用一些重要优化的代码。是什么
#define idiv(a, b) (((a) + (b) / 2) / (b))
Run Code Online (Sandbox Code Playgroud)
用于?为什么不简单
#define idiv(a, b) ((a)/(b) + 0.5)
Run Code Online (Sandbox Code Playgroud)
是整数除法溢出保护还是其他什么?
有整数变量,电压以毫伏为单位.
signed int voltage_mv = 134; //134mV
Run Code Online (Sandbox Code Playgroud)
我有2段显示器,我想显示百分之一伏特.
如何在一次操作中将milivolts转换为百分之一伏?没有IF语句,没有功能?
134 => 13
135 => 14
Run Code Online (Sandbox Code Playgroud) 我需要做整数除法.我希望以下内容返回2而不是实际1:
187 / 100 # => 1
Run Code Online (Sandbox Code Playgroud)
这个:
(187.to_f / 100).round # => 2
Run Code Online (Sandbox Code Playgroud)
会起作用,但作为解决方案似乎并不优雅.是不是只有整数运算符187 / 100 = 2呢?
编辑
因为我一直在投票,我会更清楚我的用例:
我需要计算一个价格税.我所有的价格都是美分.问责制世界中没有1美分以下,所以我需要确保我的所有价格都是整数(那些检查税的人不喜欢错误......真的!)
但另一方面,税率是19%.
所以我想找到最好的写作方式:
def tax_price(price)
price * TAX_RATE / 100
end
Run Code Online (Sandbox Code Playgroud)
其可靠地返回一个整数,而没有任何浮动副作用.
我害怕去float世界,因为它对数字表示有非常奇怪的副作用,如:
因此,我发现留在世界integer或fractional世界更安全,因此我的问题.