当我在计算器上运行此程序时:
void main(void) {
char *quot = malloc(10 * sizeof(char));
char *rest = malloc(10 * sizeof(char));
sprintf(quot, "%d", 5);
printText(quot, 0, 0);
sprintf(rest, "%f", 2.03);
printText(rest, 0, 1);
}
我的TI 84 CE计算器的 printText
功能:
void printText(const char *text, uint8_t xpos, uint8_t ypos) {
os_SetCursorPos(ypos, xpos);
os_PutStrFull(text);
}
这是我的计算器液晶显示屏上的输出:
5
%
有一个百分比代币而不是2.03
,这背后的原因是什么?
我已经包含了这些库:
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <tice.h> // this is for my TI84
答案 0 :(得分:0)
%f
被禁用。浮点转换很昂贵。使用的C的方言是C89,这是最好的C。无论如何,您可以通过在makefile中添加以下行来为程序启用%f
:
USE_FLASH_FUNCTIONS := NO
但是,这将大大增加二进制文件的大小,因此建议实现%f
的自定义受限版本。另外,此代码将执行与%f
相同的操作,但是会将输出复制到字符数组。
void float2str(float value, char *str) {
real_t tmp_real = os_FloatToReal(value);
os_RealToStr(str, &tmp_real, 8, 1, 2);
}