标签: floating-point

了解if()中的浮点变量比较

无法找到以下代码的原因:

#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)

c floating-point floating-point-conversion

-2
推荐指数
1
解决办法
4246
查看次数

Python数学精度

我在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 我不知道为什么这个问题得到很多投票!

python math floating-point floating-point-precision

-2
推荐指数
1
解决办法
2410
查看次数

为什么左移浮动值有效?

据我所知, 左移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

在哪种情况下两个输出(bc)会有所不同?

c++ floating-point bit-manipulation bit-shift

-2
推荐指数
1
解决办法
329
查看次数

如何仅按小数排序列表?

我想用十进制数对数字列表进行排序,而不管小数点左边的数字.例如,如果:

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)

可以这样做吗?

python sorting floating-point list python-2.7

-2
推荐指数
1
解决办法
590
查看次数

ocaml中奇怪的算术精度

可能重复:
JavaScript的数学是否被破坏?

我在OCaml的算术精度方面遇到了奇怪的问题.看:

# 1.1+.2.2;;
 - : float = 3.30000000000000027
Run Code Online (Sandbox Code Playgroud)

它发生在我做的事情:something.1 + something.2.有人可以试试吗?

floating-point ocaml

-3
推荐指数
1
解决办法
517
查看次数

是双重的

这可能是一个愚蠢的问题,但我在某处读到Python中的浮点数等于C++中的双精度数.因此,如果我想检查变量是否为double,我应该使用以下内容:

isinstance(v, float)
Run Code Online (Sandbox Code Playgroud)

或者这个:

isinstance(v, double)
Run Code Online (Sandbox Code Playgroud)

python floating-point isinstance

-3
推荐指数
1
解决办法
2171
查看次数

C语言:将3个字符串("123")转换为%.2f(1.23)

我需要将3个字符("123")的char*字符串转换为带有两个小数位(1.23)的浮点数.

c string floating-point double pointers

-3
推荐指数
1
解决办法
526
查看次数

C中的浮点输出/输入问题

我希望您帮助理解以下内容:

对于代码:

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?

c floating-point

-3
推荐指数
1
解决办法
850
查看次数

减去两个十进制数字,给出奇怪的输出

虽然我很开心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第一个那样获得输出?我不能用这个做任何头或尾?有人可以清楚说明这一点吗?

java floating-point

-3
推荐指数
2
解决办法
1281
查看次数

Delphi 5汇总双变量时的奇怪结果

在Delphi 5中,当将两个类型的double和一个正值以及另一个负值相同的值相加时,我会遇到奇怪的问题.

例如

dbv = 50071763.721
crv = -50071763.721

当两个值相加时结果应为0但是我得到了一些像0.0000000074505805969这样的结果

我在excel中得到了总和我得到0结果.

delphi floating-point delphi-5

-3
推荐指数
1
解决办法
691
查看次数