【问题标题】:Equivalent of fmodf in C#?C# 中 fmodf 的等价物?
【发布时间】:2011-04-10 00:15:20
【问题描述】:

在C++ C中:输出:“1610612736”

#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();
    }
}

显然不一样的输出。有什么建议吗?

【问题讨论】:

  • %d 用于十进制。如果您使用 C++,请使用流来避免此类问题。
  • 顺便说一句,这是 C 代码,而不是 C++。在 C++ 中使用&lt;cmath&gt;、&lt;cstdio&gt; 和std::fmod。
  • @Alexandre C:它被标记为 C++。
  • 这篇文章不应该被标记为“FMOD”,这个标签是关于称为FMOD的跨平台音频中间件,而不是浮点模数函数。
  • 感谢您编辑我的帖子并更改标签。我想将它标记为“fmodf”,只是这个标签不存在,而且我没有足够的声誉来创建它。

标签: c# c fmodf


【解决方案1】:

用 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

【讨论】:

  • 请使用 和 ,我很确定 C 头文件会在大多数编译器上触发错误(或至少是弃用警告)。并且请使用重载函数std::fmod 而不是C 的fmodf。
【解决方案2】:

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

【讨论】:

  • 好的,对不起,它是 C 并且标记为 C++,我实际上是用 C# 编码并且只使用 C 版本来比较。
  • @Lazlo:所以你不介意我编辑你的原始帖子;)
猜你喜欢
  • 2011-04-02
  • 2021-10-15
  • 2013-10-20
  • 2021-12-02
  • 2010-09-14
  • 2016-12-24
  • 2013-02-10
  • 2014-07-08
相关资源
最近更新 更多