无法找到以下代码的原因:
#include <stdio.h>
int main()
{
float f = 0.1;
if (f == 0.1)
printf("True");
else
printf("False");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出为false.
#include <stdio.h>
int main()
{
float f = 0.1;
if (f == (float)0.1)
printf("True");
else
printf("False");
return 0;
}
Run Code Online (Sandbox Code Playgroud)
现在显示正确的输出.这背后的原因是什么?
这种行为的原因是什么呢?
#include <stdio.h>
main()
{
int n = 0, m = 0;
if (n > 0)
if (m > 0)
printf("True");
else
printf("False");
}
Run Code Online (Sandbox Code Playgroud) 我在python中尝试了这个简单的数学运算
>>> math.floor(8.2-0.21)
7.0
>>> math.floor(8.21-0.2)
8.0
>>> math.floor(8.2-0.2)
7.0
Run Code Online (Sandbox Code Playgroud)
第三个应该返回8但是返回7?!
UPDATE
我在PHP,ruby和JAVA中尝试过,我得到了相同的结果.
更新2 我不知道为什么这个问题得到很多投票!
据我所知, 左移Float类型 不能在浮点值上使用左移运算符.但是当我尝试它时,它给出了与乘以2 n相同的答案.
#include <iostream>
#include <cmath>
using namespace std;
int main() {
// your code goes here
float a = 1.1234;
int b = (int)(a*(1<<10));
int c = (int)(a*pow(2,10));
cout << "\n a = " << a << " b = " << b << " c = " << c;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
它输出a = 1.1234 b = 1150 c = 1150
在哪种情况下两个输出(b和c)会有所不同?
我想用十进制数对数字列表进行排序,而不管小数点左边的数字.例如,如果:
some_list = [5.43, 12.01, 10.23, 3.33]
Run Code Online (Sandbox Code Playgroud)
然后排序列表应该是:
some_list_sorted = [12.01, 10.23, 3.33, 5.43]
Run Code Online (Sandbox Code Playgroud)
可以这样做吗?
可能重复:
JavaScript的数学是否被破坏?
我在OCaml的算术精度方面遇到了奇怪的问题.看:
# 1.1+.2.2;;
- : float = 3.30000000000000027
Run Code Online (Sandbox Code Playgroud)
它发生在我做的事情:something.1 + something.2.有人可以试试吗?
这可能是一个愚蠢的问题,但我在某处读到Python中的浮点数等于C++中的双精度数.因此,如果我想检查变量是否为double,我应该使用以下内容:
isinstance(v, float)
Run Code Online (Sandbox Code Playgroud)
或者这个:
isinstance(v, double)
Run Code Online (Sandbox Code Playgroud) 我需要将3个字符("123")的char*字符串转换为带有两个小数位(1.23)的浮点数.
我希望您帮助理解以下内容:
对于代码:
int main() {
int i=23;
float f=7.5;
printf("%f", i);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
输出是0.000000,怎么不是7.500000?
对于代码
int main() {
int i=23;
float f=7.5;
printf("%d\n",f);
printf("%f",i);
return 1;
}
Run Code Online (Sandbox Code Playgroud)
输出是1455115000, 7.500000.为什么不编译错误?这个号码是1455115000是什么?为什么现在正在印刷7.500000?
虽然我很开心Java Puzzlers的代码(我没有这本书),但我遇到了这段代码
public static void main(String args[]) {
System.out.println(2.00 - 1.10);
}
Run Code Online (Sandbox Code Playgroud)
输出是
0.8999999999999999
Run Code Online (Sandbox Code Playgroud)
当我尝试将代码更改为
2.00d - 1.10d 我仍然得到相同的输出 0.8999999999999999
对于,2.00d - 1.10f输出为0.8999999761581421
For,2.00f - 1.10d输出为0.8999999999999999
For,2.00f - 1.10fOutput为0.9
为什么我不能像0.9第一个那样获得输出?我不能用这个做任何头或尾?有人可以清楚说明这一点吗?
在Delphi 5中,当将两个类型的double和一个正值以及另一个负值相同的值相加时,我会遇到奇怪的问题.
例如
dbv = 50071763.721
crv = -50071763.721
当两个值相加时结果应为0但是我得到了一些像0.0000000074505805969这样的结果
我在excel中得到了总和我得到0结果.