printf-(c语言)利用%ld读取double类型,程序可以运行,但是结果是很大的负数?

问题描述

(c语言)利用%ld读取double类型,程序可以运行,但是结果是很大的负数?

#include
#define TAX_1 17850
#define TAX_2 23900
#define TAX_3 29750
#define TAX_4 14875
#define TAXRATE_1 0.15
#define TAXRATE_2 0.28
int main(void)
{
double taxsalary,taxpay;
int n;
printf("Please enter your taxsalary(q to quit):n");
while(scanf("%ld",&taxsalary)==1)
{
printf("please enter your kinds of tax(from 1 to 4):n");
printf("1)single tax: $17850 %15 more:%28n");
printf("2)owner tax: $23900 %15 more:%28n");
printf("3)double(together) tax: $29700 %15 more:%28n");
printf("4)double(divorce) tax: $23900 %15 more:%28n");
scanf("%d",&n);
if (n==1)
{
if(taxsalary<=TAX_1)
{
taxpay=taxsalary*TAXRATE_1;
printf("taxpay:%ldn",taxpay);

            }

        else
          {
            taxpay=TAX_1*TAXRATE_1+(taxsalary-TAX_1)*TAXRATE_2;
                printf("taxpay:%ldn",taxpay);
          }

    }
    if (n==2)
    {
        if (taxsalary<=TAX_2)
        {
            taxpay=taxsalary*TAXRATE_1;
                printf("taxpay:%ldn",taxpay);
        }
        else
        {
            taxpay=TAX_2*TAXRATE_1+(taxsalary-TAX_2)*TAXRATE_2;
            printf("taxpay:%ldn",taxpay);
        }

    }
    if (n==3)
    {
        if (taxsalary<=TAX_3)
        {
            taxpay=taxsalary*TAXRATE_1;
                printf("taxpay:%ldn",taxpay);
        }
        else
        {
            taxpay=TAX_3*TAXRATE_1+(taxsalary-TAX_3)*TAXRATE_2;
                printf("taxpay:%ldn",taxpay);
        }

    }
    if (n==4)
    {
        if (taxsalary<=TAX_4)
        {
            taxpay=taxsalary*TAXRATE_1;
                printf("taxpay:%ldn",taxpay);
        }
        else
        {
            taxpay=TAX_4*TAXRATE_1+(taxsalary-TAX_4)*TAXRATE_2;
                printf("taxpay:%ldn",taxpay);
        }
    }
    printf("Please enter your taxsalary:(q to quit)n");

}
return 0;

}

解决方案

非常感谢,又仔细查了一下。是%lf,记错了,

解决方案二:

%ld, 应该是读取long吧,double不是应该%lf?

时间: 2025-01-21 10:30:19

printf-(c语言)利用%ld读取double类型,程序可以运行,但是结果是很大的负数?的相关文章

c语言-scanf函数用%f读取double类型时,为什么会出现错误?

问题描述 scanf函数用%f读取double类型时,为什么会出现错误? 问题一: #include double power (double n,int p); int main (void) { double x,xpow; int exp; printf("Enter a number and the positive integer power"); printf("to which will be raised . enter q"); printf(&q

double 类型保留小数点后两位,求大神指导

问题描述 double 类型保留小数点后两位,求大神指导 图片下边为对应的后台代码. 图片中的合计怎么 小数点后边那么多位?求大神详解. private double heji1=0; private double heji2=0; private double heji3=0; private double heji4=0; public String get() throws Exception { this.init(); ruKu = dao.get(id); return SUCCES

如何利用JConsole观察分析Java程序的运行并进行排错调优_java

一.JConsole是什么 从Java 5开始 引入了 JConsole.JConsole 是一个内置 Java 性能分析器,可以从命令行或在 GUI shell 中运行.您可以轻松地使用 JConsole(或者,它更高端的 "近亲" VisualVM )来监控 Java 应用程序性能和跟踪 Java 中的代码. 二.如何启动JConsole 1.如果是从命令行启动,使 JDK 在 PATH 上,运行 jconsole 即可. 2.如果从 GUI shell 启动,找到 JDK 安装路

利用PAPI接口监测Java程序的硬件执行特征

简介:PAPI 是一组用于访问处理器硬件性能计数器的本地接口,利用这一接口对 Java 程序的硬件执 行特征进行监测将有助于在计算机系统的硬件层上发现程序性能问题的根源所在.本文介绍了 PAPI 的重 要概念及其常用接口,分析了将其应用于 Java 程序性能测评的要点和难点,提出一种基于 JVMTI 接口 的方法实现了利用 PAPI 接口监测 Java 程序的运行时硬件执行特征. PAPI 接口概览 在计算机系统的硬件层对 Java 程序的性能进行测评与分析,有助于发现程序 性能问题的根源所在.

豆瓣-关于C语言按行读取文件,读取其中数字,挨个转换成doube类型,存入数组

问题描述 关于C语言按行读取文件,读取其中数字,挨个转换成doube类型,存入数组 int main() { FILE *fp; char buffer[50]; char filename[50]; int bufferLen; int i; int j = 0; char c; double c_number[50]; printf("Input file name: "); scanf("%s", filename); if((fp = fopen(filen

printf-double类型除int类型,为什么用%ld读取输入一直是0?

问题描述 double类型除int类型,为什么用%ld读取输入一直是0? #include int main(void) { int n; double sumeven = 0.0; int ct_even = 0; double sumodd = 0.0; int ct_odd = 0; while (scanf("%d", &n) == 1 && n != 0) { if (n % 2 == 1) { sumodd += n; ++ct_odd; } els

基于C++浮点数(float、double)类型数据比较与转换的详解_C 语言

浮点数在内存中的存储机制和整型数不同,其有舍入误差,在计算机中用近似表示任意某个实数.具体的说,这个实数由一个整数或定点数(即尾数)乘以某个基数(计算机中通常是2)的整数次幂得到,这种表示方法类似于基数为10的科学记数法.所以浮点数在运算过程中通常伴随着因为无法精确表示而进行的近似或舍入.但是这种设计的好处是可以在固定的长度上存储更大范围的数.1.将字符串转换为float.double过程存在精度损失,只是float.double各自损失的精度不相同而已std::string str="8.2&

Java的double类型探索.

一.double类型的存储表示 Java的浮点类型表示完全按照IEEE754标准(Standards of IEEE 754 floating point numbers),有兴趣可以上IEEE标准网站(www.ieee.org)查阅.该标准的内容基本上描述了浮点类型的存储格式(Storage Layout),下面我从中总结几段,来概括该标准,详细信息请查阅标准原文. 1.什么是浮点数. 计算机上表达实数有两中方法:定点表示(fixed-point)和浮点表示(floating-point).定

函数调用-c语言中函数返回值类型的问题

问题描述 c语言中函数返回值类型的问题 看一道改错题: #include #include #include proc(int k)//很显然根据主调函数和返回值类型知道这里缺少类型 { int n;float s,w,p,q; n=1; s=1.0; while(n<=k){ w=2.0*n; p=w-1.0; q=w+1.0; s=s*w*w/p/q; n++; } return s; } void main(){ system("CLS"); printf("%f