在下面的这段代码中,我得到了一定百分比的结果。
<ng-template pTemplate="header" let-columns>
<tr >
<th rowspan="2" class="border-right emp-name">Employee Name</th>
<th rowspan="2" class="border-right" style="width:100px;">ID</th>
<th *ngFor="let col of columns" class="border-right">{{col.header}}</th>
</tr>
</ng-template>
<ng-template pTemplate="body" let-rowData let-columns="columns" >
<tr>
<td class="border-right" style="text-align: center">{{rowData.searchName}}</td>
<td class="border-right" style="text-align: center">{{rowData.patientIndex}}</td>
<ng-container *ngIf="rowData.status=='A'">
<td *ngFor="let col of columns" pEditableColumn [ngSwitch]="col.field" class="border-right">
<div *ngSwitchCase="'sizeMask268'">
<p-cellEditor>
<ng-template pTemplate="input">
<p-dropdown appendTo="body" [options]="n95" [(ngModel)]="rowData[col.field]" [style]="{'width':'100%'}" ></p-dropdown>
<p-calendar id="calendarInput" appendTo="body" [showIcon]="true" [(ngModel)]="rowData.dateOf268"></p-calendar>
</ng-template>
<ng-template pTemplate="output" >
<p-dropdown appendTo="body" [options]="n95" [(ngModel)]="rowData[col.field]" [style]="{'width':'100%'}" ></p-dropdown>
<p-calendar appendTo="body" [showIcon]="true" [(ngModel)]="rowData.dateOf268" (onFocus)="clickCalendar()"></p-calendar>
</ng-template>
</p-cellEditor>
</div>
</td>
</ng-container>
</tr>
</ng-template>
我希望将RatioPercent截断(缩短)到两位小数,并且截断的结果必须四舍五入到下一个整数。
例如: RatioPercent = case
when input.Name = 'Abc' then convert(int, lbase.AbcRatio)
end,
将作为96.001%
交付,而96
将作为80.01%
交付。
如果我使用81
,它将只给我cast()
和96
。
80
但是,如果我使用 RatioPercent = case
when input.Name = 'Abc' then cast(convert(int, lbase.AbcRatio) as decimal (10, 0))
end,
而不是ceiling()
,那么它将给我97和81。
答案 0 :(得分:1)
您需要将ceiling
和cast
组合在一起,首先转换为2个小数位,然后四舍五入:
select ceiling(cast(96.001 as decimal(10,2)))
union all
select ceiling(cast(80.01 as decimal(10,2)))
结果为96和81。
根据Jeroen Mostert的评论进行编辑,如果您需要96.009向下舍入到96,这是使用round
的替代选项:
select ceiling(round(96.009, 2, 1))
答案 1 :(得分:1)
这也有效:
select ceiling(cast(96.001 * 100 as int) /100.0)
union all
select ceiling(cast(80.01 * 100 as int) /100.0)
结果为96
和81
更新
在具有约50,000行的表上进行一些测试,并且当前接受的答案(ceiling(cast(96.001 as decimal(10,2)))
)的运行速度快了3毫秒……所以坚持下去。
这是一项快速测试,其中包含几个选项,您可以将它们插入自己数据库的表中:
set statistics time on
--uncomment exactly one line below
--select [column] --control
--select ceiling(([column] * 100) /100.0)
--select ceiling(cast([column] as decimal(10,2)))
--select ceiling(floor([column] * 100 )/100)
from [Table]
set statistics time off
答案 2 :(得分:0)
您可能希望将cast
与2个小数点组合,然后输入ceiling
:
ceiling(cast(convert(int, lbase.AbcRatio) as decimal (10, 2))