2010-09-08 199 views
2

C++ C:输出: “1610612736”C#中fmodf的等价物?

#include <math.h> 
#include <stdio.h> 

int main(int argc, char** argv) 
{ 
    printf("%d\n", fmodf(5.6f, 6.4f)); 
    getchar(); 
} 

在C#:输出: “5.6”

using System; 

static class Program 
{ 
    public static void Main(string[] args) 
    { 
     Console.WriteLine(5.6f % 6.4f); 
     Console.Read(); 
    } 
} 

显然不相同的输出。建议?

+1

%d为小数。如果您使用C++使用流来避免此类问题。 – 2010-09-08 23:07:37

+0

btw这是C代码,而不是C++。在C++中,使用'',''和'std :: fmod'。 – 2010-09-08 23:09:22

+0

@ Alexandre C:它被标记为C++。 – 2010-09-08 23:11:54

回答

5

改为使用printf("%f\n", fmodf(5.6f, 6.4f))

+0

很好,抱歉它是C和C++标记的事实,我实际上是使用C#编写的,只使用C版本进行比较。 – Lazlo 2010-09-08 23:51:04

+0

@Lazlo:所以你不介意我是否编辑你原来的帖子;) – 2010-09-08 23:53:53

0

校正与fprintf中的小数问题()

#include <math.h> 
#include <stdio.h> 
#include <iostream> 

int main(int argc, char** argv) 
{ 
    std::cout << fmodf(5.6f, 6.4f) << std::endl; 
    getchar(); 
} 

输出5.6

+2

请使用,我确定C头文件会在大多数编译器上触发错误(至少是弃用警告)。请使用重载函数'std :: fmod'而不是C的'fmodf'。 – 2010-09-08 23:15:58