codevs 2988 保留小数 2
2988 保留小数 2
这个难度是吸引你点进来的。(其实难度挺大)
保留小数 的加强版。加强了数据和描述。
有一个实数,要求保留k位小数。请输出结果。
两行。
第一行,要保留的数;
第二行,k
输出保留小数的结果。(四舍五入)
(样例1)
8
2
(样例2)
7.03
1
(样例3)
7.0003
0
(样例4)
9.9
-1
(样例5)
0.99
3
(样例6)
-9999.2
0
(样例1)8.00
(样例2)7.0
(样例3)7
(样例4)10
(样例5)0.990
(样例6)-9999
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的更多相关文章
- codevs 2894 保留小数
时间限制: 1 s 空间限制: 128000 KB 题目等级 : 白银 Silver 题目描述 Description 给你一个实数,小数点后不超过50位,请你保留到小数点后n位(四舍五入!!!) 输 ...
- 格式化 float 类型,保留小数点后1位
""" 练习 : 小明的成绩从去年的72分提升到了今年的85分,请计算小明成绩提升的百分点, 并用字符串格式化显示出'xx.x%',只保留小数点后1位: &qu ...
- c#保留小数点后位数的方法
Double dValue = 95.12345; ; string strValue = "95.12345"; string result = ""; re ...
- 总结C#保留小数位数及百分号处理
方法一: ); 方法二: Math.Round() 方法三: double dbdata = 0.55555; string str1 = dbdata.ToString("f2" ...
- c++保留小数问题,如有不足或错误,欢迎指出
#include<iostream> #include <iomanip> using namespace std; int main() { double a; cin> ...
- 关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其他位数)
关于Oracle中查询的数字值的显示格式需要保留小数点后两位(或者三位,及其... 方法一:使用to_char的fm格式,即: to_char(round(data.amount,2),'FM9999 ...
- java中double变量保留小数问题
(转载自玄影池扁舟) 做java项目的时候可能经常会遇到double类型变量保留小数的问题,下面便把我的经验做个简短的总结: java中double类型变量保留小数问题大体分两种情况: (一):小数点 ...
- input内强制保留小数点后两位 位数不足时自动补0
input内强制保留小数点后两位 位数不足时自动补0 小数点后位数超出2位时进行四舍五入 需引入jquery包 1.11.2版本 1 function xiaoshu(x) 2 { 3 var f = ...
- php number_format()保留小数点后几位
[PHP_保留两位小数的相关函数] php保留两位小数并且四舍五入 Php代码 1 $num = 123213.666666; 2 echo sprintf("%.2f ...
随机推荐
- Play Framework 完整实现一个APP(十)
1.定制Comment列表 新增加Comment list页面,执行命令行 > play crud:ov --template Comments/list 会生成/app/views/Comme ...
- String.Empty、null、“” 区别
概念准备: 1.引用类型是将对象是实际数据保存在堆中, 将对象在堆中的地址保存在栈中. 2.值类型直接将实际数据存放在堆中,不会将对象在堆中的地址保存在栈中. 一.String.Empty和" ...
- SQL Server 2008 R2 Service Pack 3 已经发布
微软SQL Server Product Team在9月26号官方博客宣布,Microsoft SQL Server 2008 R2 Service Pack 3 (SP3)正式发布了 .具体信息可以 ...
- Why Do We Need a Data Warehouse?
https://dwbi1.wordpress.com/2012/12/03/why-do-we-need-a-data-warehouse/ 经常有人来质疑数据仓库的价值,为什么我们需要花费一年多的 ...
- 从零自学Hadoop(13):Hadoop命令下
阅读目录 序 MapReduce Commands User Commands Administration Commands YARN Commands User Commands Administ ...
- C# 实现酒店房态图
酒店管理系统最重要和实用的是能够及时.一目了然的反应房间状态的房态图,之前在开发一个的酒店管理系统中做了一个还算实用的房态图,现在分享下: 鼠标移到每个房间上面,可显示提示信息: 还可以自定义设置不同 ...
- java实现批量下载百度图片搜索到的图片
就是写的个小程序,用于记录一下,方便后续查看,首先感谢下面这个博客,从这篇文章衍生的吧,大家可以学习下: http://www.cnblogs.com/lichenwei/p/4610298.html ...
- Linux的文件权限与目录配置
用户与用户组(Linux是一个多用户多任务的系统) 文件所有者 设置适当的权限,其他人无法看到自己的文件 用户组概念 属于同一个用户组的可以看到这个团体的公共信息,每个账户都可以有多个用户组的 ...
- 你不一定懂的cpu显示信息
在linux命令中用top查看系统的情况,在cpu这一行有一些分部表示什么 下面有一篇博文,对此写的非常清楚,特转载.猛击下面的链接 http://www.cnblogs.com/yjf512/p/3 ...
- openstack中的身份管理
原文:http://blog.csdn.net/xxfigo/article/details/8785748 原作者关于openstack的一系列文章http://blog.csdn.net/xxfi ...