实现printf 浮点数打印 -- 待解决

#include <stdio.h>

void printHex(int integer)
{
unsigned char isnegative = 0,len = 0, intstr[10]={‘\0‘};
if(integer < 0)
{
isnegative = 1;
integer = 0 - integer;
}
if (integer == 0)
intstr[len++] = ‘0‘;
while (integer)
{
intstr[len++] = (integer % 10) + ‘0‘;
integer = integer / 10;
}
if(isnegative)
intstr[len++] = ‘-‘;
//注意这个k的数据类型 使用k >= 0;为结束条件,k是有符号类型,若是无符号类型,k值回滚到最大值
for(len = len; len > 0; len--)
{
printf("%c", intstr[len-1]);
//UartSend(UART1,intstr[len-1],1);
}
}

void printFlt(float flt, int len)
//void printFlt(float flt)
{
int integer;
integer = (int)flt;
printHex(integer);
printf(".");
//UartSend(UART1,".",1);

flt = flt - integer;
while(flt && len-- )
//while(flt)
{
flt = flt * 10;
integer = (int)flt + ‘0‘;
flt = flt - integer;
printf("%c",integer);
//UartSend(UART1,&integer,1);
}
printf("\n");
}

int main(void)
{
float fNum = 1.12;
printFlt(fNum, 3);

return 0;
}

------------------------------------------------------------------------------------------------------------------------

#include<stdio.h>
typedef unsigned char uint8;
typedef unsigned int uint32;

uint8 Float2Char(float value, uint8 *array);

void main()
{
uint8 A[20];
//float value= -123.456789;
float value= -123.00152;
uint8 i;
Float2Char(value, A);
printf("%s",A);
printf("\n");
}

uint8 Float2Char(float value, uint8 *array)
{
float DecimalPart;
uint32 IntegerPart;
uint8 i = 0, j = 0, temp;
//分离整数和小数
if(value< 0)
{
value = -value ;
array[i++] = ‘-‘;
}
else
array[i++] = ‘+‘;

IntegerPart = (uint32)value;
DecimalPart = value - IntegerPart;

//处理整数
if(0 == IntegerPart)//整数部分为0
array[i++] = ‘0‘;
else
{
while(0 != IntegerPart)
{
array[i++] = IntegerPart % 10 + ‘0‘;
IntegerPart /= 10;
}
i--;
for(j = 1; j < (i+1) / 2; j++)
{
temp = array[j];
array[j] = array[i -j+1];
array[i-j+1] = temp;
}
i++;
}

array[i++] = ‘.‘;
//处理小数
array[i++] = (uint32)(DecimalPart * 10) % 10 + ‘0‘;
array[i++] = (uint32)(DecimalPart * 100)%10 + ‘0‘;
array[i++]= (uint32)(DecimalPart * 1000)%10 + ‘0‘;
array[i++] = (uint32)(DecimalPart * 10000)%10 + ‘0‘;
array[i] = ‘\0‘;
return i;
}

时间: 2024-10-11 00:53:49

实现printf 浮点数打印 -- 待解决的相关文章

POJ Exponentiation(大浮点数JAVA轻松解决)

题目链接:Clicke Here~ java解决大数就是爽阿!~ 以前大数模板敲啊敲的,敲了半天发现一交果断wrong.只从学会了java妈妈在不用担心我遇到大数了/ 这道题遇到的Java函数有: stripTrailingZeros()            去掉后缀0 toPlainString()               返回大数的非科学计数法 startsWith() startsWith()函数介绍及扩展: 描述 startsWith(),endsWith()的作用,用法,判断字符

Python判断是否是数字(无法判断浮点数)(已解决)

s为字符串s.isalnum() 所有字符都是数字或者字母s.isalpha() 所有字符都是字母s.isdigit() 所有字符都是数字s.islower() 所有字符都是小写s.isupper() 所有字符都是大写s.istitle() 所有单词都是首字母大写,像标题s.isspace() 所有字符都是空白字符.\t.\n.\r 1 def isNum2(value): 2 try: 3 x = int(value) 4 except TypeError: 5 return False 6

Powerdesigner打开工程提示打印错误 解决方法

在使用PowerDesigner打开工程时, 提示打印错误的问题,具体错误信息提示如下: 在您可以执行与打印机有关的任务(例如页面设置或打印一个文档)之前,您必须已经安装打印机.您想现在安装打印机么? 解决办法: 打开windows的服务,把 Print Spooler 这个服务启动之后,问题就解决了 Powerdesigner打开工程提示打印错误 解决方法

打印任务栏出现“正在删除-已暂停-正在打印“的解决

标题:打印任务栏出现"正在删除-已暂停-正在打印"的解决如图: 当出现这样的问题的时候,你发现你根本无法打印的,我尝试过的方法有:1.ping打印机,发现可以ping通,问题没有解决2.查看打印状态,"暂停"的√有没有勾选上,问题没有解决3.使用脱机打印,问题没有解决4.关闭打印机,然后再重启,问题没有解决5.关闭打印机,在有问题的这台电脑上面把打印服务关闭掉,然后稍微等一会儿开启打印服务,再开机,发现其它人不影响打印,问题的关键还是这台电脑上面 解决问题的办法有:

Python直接调用C库的printf()函数打印一条消息

github博客传送门 csdn博客传送门 话不多说直接上代码 # 直接从 C 库中调用 printf()函数打印一条消息 # Windows 中的 C 库位于 C:\WINDOWS\system32\msvcrt.dll,Linux 中的 C 库位于/lib/libc.so.6 import ctypes # 导入ctypes包 # msvcrt = ctypes.cdll.LoadLibrary("C:\WINDOWS\system32\msvcrt.dll") # 等同于msvc

STM32F103串口配置,并且使用printf进行打印

首先要配置串口时钟: // USART1 clock enable    RCC_APB2PeriphClockCmd(   RCC_APB2Periph_USART1 |   RCC_APB2Periph_GPIOA |   RCC_APB2Periph_AFIO, ENABLE); 然后再配置端口,在配置串口,再使能即可. void USART1_Init(void)   {   /////// config the gpio   GPIO_InitTypeDef GPIO_InitStru

vue打印插件---解决canvas打印显示问题

1.注册插件 import Print from '@/plugs/print' // 引入附件的js文件 Vue.use(Print) // 注册 2.设置ref,确定打印区域 <template> <section ref="print"> 打印内容 <div class="no-print">不需要打印内容</div> </section> </template> 3.调用方法打印 thi

printf格式化打印

格式代码 A ABC ABCDEFGH %S A ABC ABCDEFGH %5S ####A ##ABC ABCDEFGH %.5S A ABC ABCDE %5.5S ####A ##ABC ABCDE %-5S A#### ABC## ABCDEFGH Printf 格式化字符串 格式代码 1 -12 12345 123456789 %d 1 -12 12345 123456789 %6d #####1 ###-12 #12345 123456789 %.4d 0001 -0012 123

printf函数打印出彩色

echo "\033[40;34mhello,world\033[0m" 或者 #include <stdio.h>; int main (void) { printf("\033[1m\033[40;34mhello,world\033[0m\n"); return 0; } 解释:\033[1m 设置高亮度 \033[字背景颜色;字体颜色m字符串\033[0m