4/3 和 4/3.0 有啥区别? [复制]

Posted

技术标签:

【中文标题】4/3 和 4/3.0 有啥区别? [复制]【英文标题】:What is the difference between 4/3 and 4/3.0? [duplicate]4/3 和 4/3.0 有什么区别? [复制] 【发布时间】:2021-12-13 11:38:53 【问题描述】:

我需要编写一个程序来使用公式V=(4/3)*pi*r^3计算球体的体积

有什么区别

volume_sphere = (4/3)*pi*r*r*r; 

volume_sphere = (4/3.0)*pi*r*r*r; 

?

当我输入 3 作为我的 r 的值时,前者给了我一个错误的答案 (84.823196)。但是,当我使用后者(带有“.0”)时,它给了我正确的答案(113.0976)。

我对“.0”的区别感到很困惑。谢谢你的回答!

【问题讨论】:

3int 文字,3.0double 文字。使用.0 是确保将数字文字键入为double 的惯用方式。您可以使用f 作为后缀而不是.0 来使用float(单精度)而不是double 或使用lL 作为long double 没有.0 你有一个整数文字,4/3 执行整数除法(产生1 因为43都是整数,所以除法4 / 3是整数除法,结果是整数。如果其中一个数字是一个浮点数(3.0 是一个double 值)那么它将变成一个浮点运算,结果为浮点数。 另一个选项是pi * r * r * r * 4 / 3。括号的删除意味着 4 / 3 的计算不是独立于表达式的其余部分。 正如@WeatherVane 所说,操作的顺序很重要,这些操作的操作员优先级也很重要。因为你有带括号的操作,所以先解决;如果您有一个“数学等效”运算,其中一个操作数已经是浮点数,那么结果也将被计算为浮点数。 【参考方案1】:

在这个表达式中

4/3

二元运算符/ 的两个操作数都具有int 类型。所以使用了整数运算,表达式的结果是1

在这个表达式中

4/3.0

第二个操作数是double 类型的常量。因此,由于通常的算术转换,第一个操作数也被转换为 double 类型。并且运算的结果是一个浮点数。即没有将结果的小数部分截断为整数值。

【讨论】:

【参考方案2】:

4 / 3 = 1,而 4 / 3.0 = 1.333333...

一个整数除以一个整数会得到一个整数, 但是“.0”使答案有小数。

【讨论】:

以上是关于4/3 和 4/3.0 有啥区别? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

处置和关闭有啥区别? [复制]

StringBuilder 和 Stringbuffer 有啥区别? [复制]

IntentService 和 Service 有啥区别? [复制]

仿真和模拟有啥区别? [复制]

仿真和模拟有啥区别? [复制]

InputSource 和 InputStream 有啥区别? [复制]