减少C中的小数位数而不舍入[重复]

rn0zuynd  于 2023-10-16  发布在  其他
关注(0)|答案(1)|浏览(107)

此问题已在此处有答案

How do I restrict a float value to only two places after the decimal point in C?(17回答)
关闭27天前。
我正在使用这段代码,在用户输入78.5税的情况下,从5.495四舍五入到5.50,我希望它简单地删除小数点后第二位的任何内容,而不进行四舍五入。

#include "cs50.h"
#include <stdio.h>

int main()
{
    float charge = get_float("Enter the charge for food: ");
    float tip = charge/100 * 18;
    printf("Tip: $%.2f\n", tip);
    float tax = charge/100 * 7;
    printf("Tax: $%.2f\n", tax);
    float total = charge + tip + tax;
    printf("Total: $%.2f", total);
}

我尝试使用.f2,但它似乎仍然是四舍五入的数字,如在text引用。我也使用在线GDB,如果这改变了什么。

ut6juiuv

ut6juiuv1#

我不知道这是否是一个有效的方法,但我能想到的最简单的方法是:将数字乘以1000,去掉最后一个数字,然后再除以1000。大概是这样的:

float x = 5.495;
int y = (int)(x * 1000); // 5495
y -= y % 10; // 5495 - 5 = 5490
x = y / 1000.0; // 5.49

或者,您可以通过转换为整数来实现这一点。

float x = 5.495;
int y = (int)(x * 100); // 549
x = (float)y / 100; // 5.49

这条路似乎更好。

相关问题