C++ 将一个双精度图像分割为多个部分

C++ 将一个双精度图像分割为多个部分,c++,split,double,C++,Split,Double,正如标题所述,我想将一个多位数的双精度字符分割为多个部分,每个部分包含4位数字 我已经将double四舍五入到了最接近的整数,所以没有分数部分,剩下的是一个非常长的double,远远超过了最大的长整数 我需要将整数部分分成几个4位数的部分,使用整数非常简单,像这样的while语句可以: unsigned long long int IntegerWithSeveralParts; unsigned short int i = 0; unsigned int Parts[10]; while (

正如标题所述,我想将一个多位数的双精度字符分割为多个部分,每个部分包含4位数字

我已经将double四舍五入到了最接近的整数,所以没有分数部分,剩下的是一个非常长的double,远远超过了最大的长整数

我需要将整数部分分成几个4位数的部分,使用整数非常简单,像这样的while语句可以:

unsigned long long int IntegerWithSeveralParts;
unsigned short int i = 0;
unsigned int Parts[10];
while ( IntegerWithSeveralParts )
{
    Parts[i] = IntegerWithSeveralParts % 10000;
    IntegerWithSeveralParts /= 10000;
    ++ i;
}
是的,我知道零件的顺序是相反的,但是向量可以解决这个问题。问题是,我不能在浮球和双打上执行模块化,这对我来说是一个很大的问题。我可以将它们转换成字符串,并从中进行拆分,但这相当耗时,因为这将包括流的使用


还有其他方法吗?

你可以通过乘以10000,然后调制10000,将分数部分“提升”为整数。这将取小数点后的前四位,并将其转换为整数。反复这样做可以获得更多的4位数块。

你可以通过乘以10000然后调制10000,将小数部分“提升”为整数。这将取小数点后的前四位,并将其转换为整数。重复执行此操作以获得更多的4位数块。

来自
fmod()
函数族提供
x/y
的浮点余数,其中
x
y
是函数的两个参数。

fmod()
中的函数系列提供了
x/y
的浮点余数,其中
x
y
是函数的两个参数。

可以用于浮点模块算术。但一个更简单的解决方案是使用stringstream将浮点转换为字符串,然后将字符串拆分为最多4个长度的片段。

可以用于浮点模块算术。但一个更简单的解决方案是使用stringstream将浮点值转换为字符串,并将字符串拆分为最多4个长度的片段。

当您将浮点值的二进制表示形式转换为十进制表示形式时(通常通过转换为文本来显示它),您通常会得到一系列无界的十进制数字。当您设置输出流的精度时,您会告诉运行库限制其显示的位数,并使尾部变圆。您在这里要求的基本上是相同的,但数字的排列方式与输出流所呈现的不同。最简单的方法是使用输出流生成任意数量的数字,然后根据需要重新排列:

std::string result;
std::ostring_stream out;
out << std::fixed << std::precision(12) << result;
// now fiddle with result however you'd like
std::字符串结果;
std::ostring_流出;

out当您将浮点值的二进制表示形式转换为十进制表示形式时(通常通过转换为文本来显示),您通常会得到一系列无界的十进制数字。当您设置输出流的精度时,您会告诉运行库限制其显示的位数,并使尾部变圆。您在这里要求的基本上是相同的,但数字的排列方式与输出流所呈现的不同。最简单的方法是使用输出流生成任意数量的数字,然后根据需要重新排列:

std::string result;
std::ostring_stream out;
out << std::fixed << std::precision(12) << result;
// now fiddle with result however you'd like
std::字符串结果;
std::ostring_流出;

我知道这一点,但我想知道如何修改浮点值。但正如@JonathanLeffler所说的,我需要的函数是cmath。我知道这一点,但我想知道如何修改浮点值。但正如@JonathanLeffler所说的,我需要的函数是cmath。为什么?我认为流操作的成本相当高,还有
stringstream
string
,以及
string
int
。这看起来真的很昂贵。实际的成本取决于应用程序。当然,对于整数来说可能会很昂贵,但对于浮点数,我不太确定。您是否对应用程序性能敏感?如果它是一个普通的应用程序,并且这个函数没有被调用数千次或数百万次,那么为什么不直接使用解决方案呢?我认为流操作的成本相当高,还有
stringstream
string
,以及
string
int
。这看起来真的很昂贵。实际的成本取决于应用程序。当然,对于整数来说可能会很昂贵,但对于浮点数,我不太确定。您是否对应用程序性能敏感?如果它是一个普通的应用程序,并且这个函数没有被调用数千次或数百万次,那么为什么不使用直接的解决方案呢