将科学计数法中的数字转换为十进制[关闭]

Posted

技术标签:

【中文标题】将科学计数法中的数字转换为十进制[关闭]【英文标题】:convert numbers in scientific notation to decimal [closed] 【发布时间】:2020-11-26 13:43:00 【问题描述】:

编写一个 C 程序,将科学记数法中的数字转换为等效的十进制形式: 给定 8.3e+2 输出 = 830 2.E-1 输出 = 0.2 4.3E2 输出 = 430 C/C++ 中是否有任何内置库或函数可以做到这一点? 或者必须编写自己的代码,在这种情况下,有什么简单的方法可以实现这一点?

【问题讨论】:

首先决定您是否需要 C 或 C++ 的解决方案,它们是两种截然不同的语言。其次,你自己试过什么?请花一些时间阅读How to Ask,以及this question checklist。最后,请了解如何edit 您的问题,例如包含您尝试的minimal reproducible example。 您可能想探索scanf() formatting specs 和printf() formatting specs。 问题是可以依赖哪些先决条件。例如。是否可以将 1.23e-100 转换为十进制形式?需要处理的值的范围是多少? @EricPostpischil 现在您已经删除了 C++ 标签,问题是发布的已接受答案似乎无效。也许撤消或更改您的编辑? @pensee:原始海报。您应该说明您需要 C 还是 C++ 解决方案。如果你想要 C,你应该取消对当前答案的接受,因为它是 C++,因为它是不正确的。如果你想要 C++,你应该添加 C++ 标签,删除 C 标签,并编辑问题以仅引用 C++,而不是 C。它们是不同的语言,有不同的规则,并且不应将它们混合在问题中,除非问题涉及两者之间的相互作用或两者之间的差异。 【参考方案1】:

试试这个

#include <iostream>
#include <string>


int32_t main(int32_t argc, char *argv[]) 
    std::string str = "8.3e+2";
    std::cout << std::stod(str) << std::endl;
    
    return EXIT_SUCCESS;

【讨论】:

这适用于我的编译器,但我有一个问题:你为什么写这个int32_t main, char *argv[] 而不仅仅是int main()。好像是Java C 从命令行获取参数,这就是你捕获它们的方式,argc 是参数的数量,argv 是带有它们的字符串数组。 @ACoelho 没有对任何命令行参数做任何事情。在这个 mcve 中。顺便提一句。 int32_t main 而不是 int main 在我看来也有点奇怪。 (我觉得没有错……) 谢谢 这似乎工作。我是 *** 的初学者,想知道几件事 - 1) 对于新行,我们是否总是需要输入 ?这很奇怪,我不输入这个标签就无法换行。同样,多个空格直接不起作用。不知道那个标签是什么。使用这个问题作为学习 *** 语法的机会。 int32_t main 是错误的。 C++ 2017 (draft n4659) 6.6.1 说main 应该有一个声明的返回类型int。可能int32_tint 的别名(如果包含&lt;cstdint&gt;),但这不是可移植的。此外,尽管 OP 标记了 C 和 C++,并在一个地方编写了 C/C++,但他们要求提供 C 程序,因此平衡在于 C,而不是 C++。

以上是关于将科学计数法中的数字转换为十进制[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

将不同的数字转换为小数 C#(科学记数法到十进制)

将数据帧转换为 numpy 数组会导致所有数字以科学计数法打印 [关闭]

将具有科学计数法的字符串列表转换为十进制数

在bash中将科学记数法转换为十进制

Excel 2010 将单元格内容中的科学记数法方程转换为十进制表示

将包含科学计数法数字的字符串转换为 PHP 中的普通字符串