2988 保留小数 2

 时间限制: 1 s
 空间限制: 128000 KB
 题目等级 : 白银 Silver
 
 
 
题目描述 Description

这个难度是吸引你点进来的。(其实难度挺大)

保留小数 的加强版。加强了数据和描述。

有一个实数,要求保留k位小数。请输出结果。

输入描述 Input Description

两行。

第一行,要保留的数;

第二行,k

输出描述 Output Description

输出保留小数的结果。(四舍五入)

样例输入 Sample Input

(样例1)

8

2

(样例2)

7.03

1

(样例3)

7.0003

0

(样例4)

9.9

-1

(样例5)

0.99

3

(样例6)

-9999.2

0

样例输出 Sample Output

(样例1)8.00

(样例2)7.0

(样例3)7

(样例4)10

(样例5)0.990

(样例6)-9999

数据范围及提示 Data Size & Hint

k在longlong范围内;

要保留的小数在10000位以内。

如果k为负数,则向前保留。

要保留的小数可以为负数。

/*
这个题竟然是白银题!
可怜的我连怎么保留负数位都不知道!
╮(╯▽╰)╭
无良的我只能粘题解了
*/
#include<iostream>
#include<string>
using namespace std;
string process(string s,long long k)
{
bool negative=s.at()=='-';
if(negative) s=s.substr(,s.size()-);
unsigned point=s.find('.');
if(point == string::npos)
{
s.append(".");
point=s.size()-;
}
if(k>)
{
if(point+(unsigned)k>=s.size())
{
int length=point+k-s.size()+;
int i;
for(i=;i<length;i++)s.append("");
if(negative)s='-'+s;
return s;
}
else
{
string result=s.substr(,point+k+);
if(point+(unsigned)k+<s.size()&&s.at(point+k+)>'')
{
int i=point+k;
while(i>=&&(result.at(i)=='.'||result.at(i)==''))
{
if(result.at(i)=='')result.at(i)='';
--i;
}
if(i>=)++result.at(i);
else result=''+result;
}
if(negative)result = '-' + result;
return result;
}
}
else if(k==)
{
string result=s.substr(,point);
if(point+<s.size()&&s.at(point+)>'')
{
int i=point-;
while(i>=&&result.at(i)=='')result.at(i--)='';
if(i>=)++result.at(i);
else result=''+result;
}
if(negative)result='-'+result;
return result;
}
else
{
string result=s.substr(,point);
long long i=;
while(k--<-)
{
result.at(result.size()-i)='';
++i;
}
bool up=result.at(result.size()-i)>'';
result.at(result.size()-i)='';
if(up)
{
i=result.size()-i-;
while(i>=&&result.at(i)=='')result.at(i--) = '';
if(i>=)++result.at(i);
else result = '' + result;
}
if(negative)result='-'+result;
return result;
}
}
int main()
{
string s;
long long k;
cin>>s>>k;
cout<<process(s, k)<<endl;
return ;
}

codevs 2988 保留小数 2的更多相关文章

  1. codevs 2894 保留小数

    时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 给你一个实数,小数点后不超过50位,请你保留到小数点后n位(四舍五入!!!) 输 ...

  2. 格式化 float 类型,保留小数点后1位

    """  练习 :   小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点,   并用字符串格式化显示出'xx.x%',只保留小数点后1位: &qu ...

  3. c#保留小数点后位数的方法

    Double dValue = 95.12345; ; string strValue = "95.12345"; string result = ""; re ...

  4. 总结C#保留小数位数及百分号处理

    方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ...

  5. c++保留小数问题,如有不足或错误,欢迎指出

    #include<iostream> #include <iomanip> using namespace std; int main() { double a; cin> ...

  6. 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)

    关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...

  7. java中double变量保留小数问题

    (转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ...

  8. input内强制保留小数点后两位 位数不足时自动补0

    input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...

  9. php number_format()保留小数点后几位

    [PHP_保留两位小数的相关函数] php保留两位小数并且四舍五入 Php代码   1     $num = 123213.666666;  2     echo sprintf("%.2f ...

随机推荐

  1. Play Framework 完整实现一个APP(十)

    1.定制Comment列表 新增加Comment list页面,执行命令行 > play crud:ov --template Comments/list 会生成/app/views/Comme ...

  2. String.Empty、null、“” 区别

    概念准备: 1.引用类型是将对象是实际数据保存在堆中, 将对象在堆中的地址保存在栈中. 2.值类型直接将实际数据存放在堆中,不会将对象在堆中的地址保存在栈中. 一.String.Empty和" ...

  3. SQL Server 2008 R2 Service Pack 3 已经发布

    微软SQL Server Product Team在9月26号官方博客宣布,Microsoft SQL Server 2008 R2 Service Pack 3 (SP3)正式发布了 .具体信息可以 ...

  4. Why Do We Need a Data Warehouse?

    https://dwbi1.wordpress.com/2012/12/03/why-do-we-need-a-data-warehouse/ 经常有人来质疑数据仓库的价值,为什么我们需要花费一年多的 ...

  5. 从零自学Hadoop(13):Hadoop命令下

    阅读目录 序 MapReduce Commands User Commands Administration Commands YARN Commands User Commands Administ ...

  6. C# 实现酒店房态图

    酒店管理系统最重要和实用的是能够及时.一目了然的反应房间状态的房态图,之前在开发一个的酒店管理系统中做了一个还算实用的房态图,现在分享下: 鼠标移到每个房间上面,可显示提示信息: 还可以自定义设置不同 ...

  7. java实现批量下载百度图片搜索到的图片

    就是写的个小程序,用于记录一下,方便后续查看,首先感谢下面这个博客,从这篇文章衍生的吧,大家可以学习下: http://www.cnblogs.com/lichenwei/p/4610298.html ...

  8. Linux的文件权限与目录配置

    用户与用户组(Linux是一个多用户多任务的系统) 文件所有者   设置适当的权限,其他人无法看到自己的文件 用户组概念   属于同一个用户组的可以看到这个团体的公共信息,每个账户都可以有多个用户组的 ...

  9. 你不一定懂的cpu显示信息

    在linux命令中用top查看系统的情况,在cpu这一行有一些分部表示什么 下面有一篇博文,对此写的非常清楚,特转载.猛击下面的链接 http://www.cnblogs.com/yjf512/p/3 ...

  10. openstack中的身份管理

    原文:http://blog.csdn.net/xxfigo/article/details/8785748 原作者关于openstack的一系列文章http://blog.csdn.net/xxfi ...