“双”是什么意思?在天花板上做(双)?

发布于 2024-11-06 12:17:06 字数 405 浏览 5 评论 0原文

我有一个数字(假设是 34),我想找到它的下一个 10 的倍数。我可以通过以下方法做到这一点:

  1. 将数字除以 10
  2. 将其四舍五入为整数
  3. 乘以 10。

经过一番研究,我发现这是 Objective C 中的代码:

int number = 34;
int roundedNumber = ceil((double)number/10)*10;

我的问题是: (double) for,为什么删除 (double) 会导致它向下舍入而不是向上舍入?

我从谷歌搜索中了解到,将浮点格式更改为“双精度”,但说实话,这对我来说太复杂了。谁能简单解释一下它在做什么?

I have a number (let's say, 34), and I want to find its next multiple of ten. I can do this by:

  1. Dividing the number by 10
  2. Rounding it up to a whole number
  3. Multiplying by 10.

After a bit of research, I discovered that this is the code for that in Objective C:

int number = 34;
int roundedNumber = ceil((double)number/10)*10;

My question is: what is the (double) for, and why does removing (double) cause it to round down instead of up?

I understand from googling that changes the float format to "double precision" but, to be honest, this is way too complicated for me. Can anyone provide a simple explanation of what it is doing?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

堇色安年 2024-11-13 12:17:06

如果您没有演员表,则会发生以下情况(如果数字为 34)。

  1. 使用整数算术,number/10 是 number/10 向下舍入,即 3。
  2. ceil(3) = 3
  3. 3*10 = 30

如果进行强制转换,会发生以下情况:

  1. (double)number = 34.0
  2. 34.0 / 10 = 3.4
  3. ceil (3.4) = 4.0
  4. 4.0*10 = 40

需要认识到的重要一点是整数除法总是向 0 舍入。

If you don't have the cast the following happens (if number is 34).

  1. Using integer arithmetic, number/10 is number/10 rounded down, ie 3.
  2. ceil(3) = 3
  3. 3*10 = 30

If you have the cast, the following happens:

  1. (double)number = 34.0
  2. 34.0 / 10 = 3.4
  3. ceil(3.4) = 4.0
  4. 4.0*10 = 40

The important thing to realise is Integer division always rounds towards 0.

李白 2024-11-13 12:17:06

它将 number 转换为 double,以便执行浮点除法而不是整数除法。比较 1/21.0/2

It casts number as a double so that float division is performed instead of integer division. Compare 1/2 versus 1.0/2.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文